晚上好,
请原谅基本问题 - 我试图创建一个脚本,以便在我的工作场所做一些工作更有效率。
该脚本旨在打开网络共享并在其中创建文件夹,请求用户输入(这将是本地配置文件名称),如果存在,则将内容复制到我们在网络上创建的文件夹分享。然后该脚本将删除网络共享。
脚本如下(原谅不整洁)
@echo off
net use X: \\40aGlenwood-NAS\ROOM16-Backup
:UserInput
set /p "UserName=Enter the user's name: "
IF NOT EXIST %UserName% GOTO UserInput
IF EXIST %UserName% GOTO Proceed
:Proceed
xcopy "C:\Users\%UserName%\Desktop" "X:\Backup" /f /r /i
net use X: /D /YES
timeout /t 10
此脚本在理论上运行良好,但一旦运行,命令框将显示以下内容:
"Douglas" is not recognized as an internal or external command
请参阅道格拉斯'是我们声明的变量的一部分。它不应该是一个命令。
这里有什么帮助吗?我知道它不会影响脚本,但我不希望它显示该消息。另外,请记住,我以前没有编写或创建批处理脚本的经验。
答案 0 :(得分:1)
给它一个旋转:
@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等的代码执行。