我正在尝试将来自不同来源的多个文件复制到域
上的虚拟路径我的代码是:
@echo on
setlocal EnableDelayedExpansion
net use X: /delete
net use X: \\192.168.11.240\my virual path name
set folderpath="X:\"
for /F "delims=" %%a in ('dir /b /od "source1\*.txt"') do set Youngest=%%a
XCOPY /Y "source1\%Youngest%" "%folderpath%"
for /F "delims=" %%a in ('dir /b /od "source2\*.txt"') do set Youngest=%%a
XCOPY /Y "source2\%Youngest%" "%folderpath%"
for /F "delims=" %%a in ('dir /b /od "source3\*.txt"') do set Youngest=%%a
XCOPY /Y "source3\%Youngest%" "%folderpath%"
@echo on
cd %folderpath%
for /f %%a in ('dir /b "%folderpath%\*.txt"') do (
set "fname=%%~na"
ren "%%a" "!fname:~0,-33!.txt"
)
pause
我收到错误消息:
“批处理文件错误,文件名目录名称或卷标语法不正确”
这里出了什么问题?
答案 0 :(得分:0)
如果路径中有任何空格,则应使用双引号。
尝试使用以下方法映射驱动器:
net use X: /delete
net use X: "\\192.168.11.240\my virual path name" /persistent:yes
答案 1 :(得分:0)
我猜你可以使用pushd
。
它与net use
基本相同,并自动更改目录。这可能有所帮助(然后在完成任务时使用popd
。)
此外,你可以输入pause
来查看错误发生的确切位置(意味着你写的是哪个块)。
在前两个For-Loops中,您使用的是%youngest%
而不是!youngest!
;不确定是否有意。
最后我不确定最后的For-Loop是如何工作的,但看起来你首先要更改包含\
的目录,然后让For-Loop查找X:\\
,因为你包含了另一个在那里反斜杠。