Windows 批处理脚本:显示变量";不被识别为内部或外部命令”;

Windows 批处理脚本:显示变量";不被识别为内部或外部命令”;,windows,batch-file,cmd,command,Windows,Batch File,Cmd,Command,大家晚上好 请原谅这个基本问题-我正在尝试创建一个脚本,使我的工作场所的一些工作更有效率 该脚本用于打开网络共享并在中创建文件夹,请求用户输入(即本地配置文件名),如果存在,则将内容复制到我们在网络共享上创建的文件夹中。然后,脚本将删除网络共享 剧本如下(请原谅不整洁) 该脚本在理论上运行良好,但一旦运行,命令框将显示以下内容: 看,单词“Douglas”是我们声明的变量的一部分。这不是命令 有人帮忙吗?我知道这不会影响脚本,但是我不希望它显示该消息。另外,请记住,我以前没有编写或创建批处理脚

大家晚上好

请原谅这个基本问题-我正在尝试创建一个脚本,使我的工作场所的一些工作更有效率

该脚本用于打开网络共享并在中创建文件夹,请求用户输入(即本地配置文件名),如果存在,则将内容复制到我们在网络共享上创建的文件夹中。然后,脚本将删除网络共享

剧本如下(请原谅不整洁)

该脚本在理论上运行良好,但一旦运行,命令框将显示以下内容:

看,单词“Douglas”是我们声明的变量的一部分。这不是命令

有人帮忙吗?我知道这不会影响脚本,但是我不希望它显示该消息。另外,请记住,我以前没有编写或创建批处理脚本的经验

试一试:

@echo off
setlocal    
%SystemRoot%\System32\net.exe use X: \\40aGlenwood-NAS\ROOM16-Backup
if %ERRORLEVEL% NEQ 0 (
    echo Failed to map drive.
    goto END
    )

:UserInput
set /p USER="Enter the user's name: " 
IF NOT EXIST "c:\users\%USER%\." GOTO UserInput

%SystemRoot%\System32\xcopy.exe "C:\Users\%USER%\Desktop" "X:\Backup" /f /r /i
%SystemRoot%\System32\net.exe use X: /D /YES
%SystemRoot%\System32\timeout.exe /t 10

endlocal    
:END

另一方面,显式路径引用是为了安全,即:为了防止代码执行其他人的NET.EXE等。

有几个flae,
UserName
是一个预定义的环境变量,已使用当前用户名设置。如果您想引用当前用户,无需询问。您没有在代码中创建目录。要检查目录是否存在,您需要包括路径(最好是双引号),请在打开的
cmd
窗口中尝试:
如果不存在,Joe Douglas echo GOTO UserInput
。使用双引号:
如果不存在“Joe Douglas”echo GOTO UserInput
.LotPing-如果目录不存在,xcopy命令不创建目录吗?我已经将变量改为'ProfileName',谢谢。其想法是在PC上输入符合特定命名标准的本地配置文件的名称,然后将其复制到网络共享。谢谢你的评论!
@echo off
setlocal    
%SystemRoot%\System32\net.exe use X: \\40aGlenwood-NAS\ROOM16-Backup
if %ERRORLEVEL% NEQ 0 (
    echo Failed to map drive.
    goto END
    )

:UserInput
set /p USER="Enter the user's name: " 
IF NOT EXIST "c:\users\%USER%\." GOTO UserInput

%SystemRoot%\System32\xcopy.exe "C:\Users\%USER%\Desktop" "X:\Backup" /f /r /i
%SystemRoot%\System32\net.exe use X: /D /YES
%SystemRoot%\System32\timeout.exe /t 10

endlocal    
:END