Windows移动命令不使用bat

时间:2015-12-15 12:32:15

标签: regex windows batch-file

我创建了一个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"

请帮助解决这个问题。

1 个答案:

答案 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中的一个开关。有些命令接受 / 作为目录分隔符,但不是全部。