【问题标题】:batch copy and rename files in virtual path批量复制和重命名虚拟路径中的文件
【发布时间】:2016-06-09 06:21:31
【问题描述】:

我正在尝试将多个文件从不同来源复制到域上的虚拟路径

我的代码是:

@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

我收到错误消息:

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

这里出了什么问题?

【问题讨论】:

  • @Stephan:我没有以任何方式更改代码。
  • @Stephan:查看实际降价,而不是渲染输出(使用side-by-side markdown 按钮查看)。当文本未格式化为代码时,两个反斜杠将呈现为单个反斜杠。应用代码格式化时,会显示两个反斜杠(但它们从一开始就在代码中)
  • `@a_horse_with_no_name 呃? wtf - 令人困惑......你是对的。让我们删除这个对话。

标签: windows batch-file batch-rename


【解决方案1】:

如果路径中有空格,则应使用双引号。

尝试使用此映射驱动器:

net use X: /delete
net use X: "\\192.168.11.240\my virual path name" /persistent:yes

【讨论】:

  • 仍然无法正常工作...似乎无法识别 cd X:\ 之后的 X:\ 路径
  • 使用 `cd /d x:` 切换到另一个驱动器。
【解决方案2】:

我猜你可能会为此使用pushd

它与net use 的作用基本相同,并自动更改目录。这可能已经有所帮助(然后在您完成任务时使用popd)。

您还可以输入pause 以查看错误发生的确切位置(即您编写的块中的哪个块)。

在前两个 For 循环中,您使用 %youngest% 而不是 !youngest!;不确定这是不是有意的。

最后,我不确定最后一个 For-Loop 是如何工作的,但看起来您首先更改了包含 \ 的目录,然后让 For-Loop 查找 X:\\,因为您在其中包含了另一个反斜杠。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 2012-09-29
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    相关资源
    最近更新 更多