批量复制和重命名虚拟路径中的文件

时间:2016-06-09 06:21:32

标签: windows batch-file batch-rename

我正在尝试将来自不同来源的多个文件复制到域

上的虚拟路径

我的代码是:

@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

我收到错误消息:

  

“批处理文件错误,文件名目录名称或卷标语法不正确”

这里出了什么问题?

2 个答案:

答案 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:\\,因为你包含了另一个在那里反斜杠。