运行此脚本时,会输出以下错误消息:
命令的语法不正确
文件夹位于服务器上,文件夹名称包含空格。
@echo off
for %%I in ("\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\*.csv") do (
if not exist
"\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\CSV\%%~nI.csv.completed"
xcopy "\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\%%~nxI" "\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\CSV"/D
)
答案 0 :(得分:0)
单线解决方案:
@for %%I in ("\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\*.csv") do @if not exist "%%~dpICSV\%%~nxI.completed" %SystemRoot%\System32\xcopy.exe "%%I" "%%~dpICSV\" /C /D /Q /Y >nul 2>&1
多线解决方案:
@echo off
for %%I in ("\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\*.csv") do (
if not exist "%%~dpICSV\%%~nxI.completed" (
%SystemRoot%\System32\xcopy.exe "%%I" "%%~dpICSV\" /C /D /Q /Y >nul 2>&1
)
)
这里重要的是目标文件夹路径末尾的反斜杠,因为这是 XCOPY 的明确指示,即目标指定目录而不是文件名。否则,此处用于复制单个文件的 XCOPY 会在目标指定目录或文件并等待用户输入时提示用户。有关详细信息,请参阅batch file asks for file or folder。
出于测试目的,提供额外的调试信息,并且不会抑制任何标准或错误输出:
@echo off
for %%I in ("\\path31vm\file transfers\Data Files\Inbound\VMs\su\Reg\new\*.csv") do (
echo CSV file is: %%I
if not exist "%%~dpICSV\%%~nxI.completed" (
echo Not existing: %%~dpICSV\%%~nxI.completed
%SystemRoot%\System32\xcopy.exe "%%I" "%%~dpICSV\" /C /D /Y
) else (
echo Existing is: %%~dpICSV\%%~nxI.completed
)
)
pause
要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。
echo /?
for /?
if /?
xcopy /?
另请阅读Microsoft有关Using Command Redirection Operators。
的文章