我创建了一个Windows bat文件,它将创建一个目录,然后创建子目录,最后需要将匹配文件移动到目标文件夹,但它没有移动显示错误"存在重复的文件名,或文件无法找到"但我在文件夹中有匹配的字符串。请帮助解决这个问题
我的批处理脚本显示在下面
set AUTOMATEDDIR=C:/test/2122/Inter/Test/WEB
CD %AUTOMATEDDIR%\..\Reports\Deliverable
FOR %%d IN (AgentCreate) DO (
MKDIR "%%d"
FOR %%e IN (Requests Responses) DO (
echo inside
MKDIR "%%d\%%e"
MOVE "Unidentified\%%e\*%%d*" "%%d\%%e"
)
)
当我执行上面的脚本时,它显示以下错误
C:\test\2122\Inter\Test\Reports\Deliverable>(
MKDIR "AgentCreate"
FOR %e IN (Requests Responses) DO (
echo inside
MKDIR "AgentCreate\%e"
MOVE "Unidentified\%e\*AgentCreate*" "AgentCreate\%e"
)
)
C:\test\2122\Inter\Test\Reports\Deliverable>(
echo inside
MKDIR "AgentCreate\Requests"
MOVE "Unidentified\Requests\*AgentCreate*" "AgentCreate\Requests"
)
inside
A duplicate file name exists, or the file
cannot be found.
C:\test\2122\Inter\Test\Reports\Deliverable>(
echo inside
MKDIR "AgentCreate\Responses"
MOVE "Unidentified\Responses\*AgentCreate*" "AgentCreate\Responses"
)
inside
A duplicate file name exists, or the file
cannot be found.
我的文件夹请求包含文件夹" Res_20121203_Test_1"如下
C:\test\2122\Inter\Test\Reports\Deliverable\Unidentified\Requests\Res_20121203_Test_1
Res_20121203_Test_1 folder contains files like below
-20121203B001601-292XtOHAAgentCreate601
-20121203B002603-292XtOHAAgentCreate603
以上文件匹配" AgentCreate"需要移动" AgentCreate \ Requests"文件夹还将文件匹配到" AgentCreate \ Responses"
请帮助解决这个问题。
答案 0 :(得分:1)
FOR %%d IN (AgentCreate) DO (
MKDIR "%%d" 2>nul
FOR %%e IN (Requests Responses) DO (
echo inside
MKDIR "%%d\%%e" 2>nul
FOR /f "delims=" %%t IN ('dir /s /b /a-d "Unidentified\%%e\*%%d*" 2^>nul') do MOVE "%%t" "%%d\%%e" >nul
)
)
我误读了这个要求。这对我有用。
2>nul
会抑制错误消息。 >nul
抑制"移动"报告和2^>nul
抑制文件未找到' dir
的输出。插入符号必须告诉cmd
重定向是要执行的命令的一部分,而不是for
的一部分。
实际上,扫描trget目录以查找子目录/s
中基本形式(仅文件名)/b
和没有目录名的匹配文件/a-d
。
您可能需要尝试echo move
来验证操作。
请注意 \ 是目录分隔符,而 / 是winbatch中的一个开关。有些命令接受 / 作为目录分隔符,但不是全部。