Batch file 使用批处理文件通过网络复制文件
每当运行上述批处理文件时,我都会遇到以下错误: CMD不支持将UNC路径作为当前目录Batch file 使用批处理文件通过网络复制文件,batch-file,networking,cmd,xcopy,Batch File,Networking,Cmd,Xcopy,每当运行上述批处理文件时,我都会遇到以下错误: CMD不支持将UNC路径作为当前目录 Ps-抱歉格式化…代码不会全部变成灰色:(而不是CD,可以使用PUSHD命令。请记住,内部PUSHD将执行网络使用并消耗操作系统的“驱动器号”。如果执行次数太多,系统将用完“驱动器号” 请记住在适当的时间POPD 更新:再看一遍,我怀疑你是否需要更改目录。将移动到新目录的文件存在于何处?需要进行更多分析。以下是一个批处理代码,它应该适用于你的任务: @ECHO OFF set /p TerminalName=
Ps-抱歉格式化…代码不会全部变成灰色:(而不是
CD
,可以使用PUSHD
命令。请记住,内部PUSHD
将执行网络使用
并消耗操作系统的“驱动器号”。如果执行次数太多,系统将用完“驱动器号”
请记住在适当的时间POPD
更新:再看一遍,我怀疑你是否需要更改目录。将
移动到新目录的文件存在于何处?需要进行更多分析。以下是一个批处理代码,它应该适用于你的任务:
@ECHO OFF
set /p TerminalName= Enter the PC you wish to relocate ECFs on:
ECHO Do you wish to relocate the ECFs on %TerminalName% ?
PAUSE
IF NOT EXIST "\\%TerminalName%\c$\Program Files\Google" (
ECHO You don't have Google installed
) ELSE (
ECHO You have Google installed!
ECHO Relocating the ECF Files! Here we go...
IF EXIST "\\%TerminalName%\c$\Program Files\Google" (
ECHO The ECF Folder already exists..
ECHO Moving ECFs now
cd \\%TerminalName%\c$\Program Files\Google
FOR %%f IN (*.ecf) DO move /y "%%f" "\\%TerminalName%\c$\Program Files\Google"
) ELSE (
ECHO No ECF Folder exists...Let's sort that out!
MKDIR "\\%TerminalName%\c$\Program Files\Google"
cd \\%TerminalName%\c$\Program Files\Google
ECHO Moving ECFs now
FOR %%f IN (*.ecf) DO move /y "%%f" "\\%TerminalName%\c$\Program Files\Google"
)
)
ECHO Finished!
PAUSE
您需要相应地设置SourcePath
。并且您需要用您环境中正确的内容替换所有出现的ECF_文件夹
使用命令MOVE移动文件,而不切换当前工作目录,因为这是不需要的。并且命令MOVE还支持通配符,因此不需要for循环
如果批处理文件的用户在批处理文件中输入了无效的终端名称,例如双引号、尖括号或其他具有特殊含义的字符,则部分使用延迟环境变量扩展。打开命令提示窗口并在此窗口中执行set/?
,以了解延迟扩展的详细信息
有一次使用!TerminalName!
和一次!TargetPath!
代替%TerminalName%
和%TargetPath%
。在远程计算机上存在Google目录得到肯定验证后,应该可以安全地引用TargetPath
,而不延迟扩展。尝试将unc patsh映射为ode>net use
@npocmaka net use是否能够拾取变量,因为它将根据远程终端名称的不同而变化?嗨@Paul-他们将从\\RemoteLocation1(变量)\\c$\Program Files\Google移动到\\RemoteLocation2(变量)\\c$\Program Files\Google
@ECHO OFF
SETLOCAL EnableDelayedExpansion
SET /P "TerminalName=Enter the PC you wish to relocate ECFs on: "
ECHO Do you wish to relocate the ECFs on !TerminalName! ?
PAUSE
SET "SourcePath=\\RemoteComputer\\c$\Program Files\Google\ECF_Folder"
SET "TargetPath=\\!TerminalName!\c$\Program Files\Google"
IF NOT EXIST "!TargetPath!" (
ECHO You don't have Google installed.
GOTO EndMoveECF
)
ECHO You have Google installed!
ECHO Relocating the ECF files! Here we go...
IF EXIST "%TargetPath%\ECF_Folder" (
ECHO The ECF folder already exists..
) ELSE (
ECHO No ECF Folder exists... Let's sort that out!
MKDIR "%TargetPath%\ECF_Folder"
IF ERRORLEVEL 1 (
ECHO Failed to create ECF folder "%TargetPath%\ECF_Folder".
GOTO EndMoveECF
)
)
ECHO Moving ECF files now ...
MOVE /Y "%SourcePath%\*" "%TargetPath%\ECF_Folder\"
ECHO Finished!
:EndMoveECF
ENDLOCAL
PAUSE