批处理脚本根据文件的当前目录将文件移动到目录

时间:2015-09-01 12:23:51

标签: batch-file

我试图根据文件的当前位置对很多文件进行排序,例如:

File 1 is located at C:\Work\Movies\Subs\Subtitle.txt
File 2 is located at C:\Work\Movies\Subs\Special\Subtitle.txt
File 3 is located at C:\Work\MoviesSpanish\Subs\Subtitle.txt

我试图像这样移动文件:

File 1 to C:\Work\InProgress\Movies\Subs\Subtitle.txt
File 2 to C:\Work\InProgress\Movies\Subs\Special\Subtitle.txt
File 3 to C:\Work\InProgress\MoviesSpanish\Subs\Subtitle.txt

批处理脚本位于C:\Work\MoveFile.bat

我上面列出了更多文件。只是为了估计我会说每个文件夹大约300-500个,并且有更多的子目录(例如.\Subs\01\一直到.\Subs\300\并且它们每个都包含一堆文本文件)。我需要将所有.txt文件从当前位置移动到C:\Work\中的新文件夹,同时保留目录位置的其余部分。所以他们被转移到C:\Work\[New Folder]\[Rest of Original Location]

我想批量做这件事,但我不知道从哪里开始。我已经有以下代码,它删除了不包含特定字符串的文件:

for /r %%Z in (*.txt) do (
    SET "count="
    for /F "usebackq delims=," %%A in ("%%Z") do (
        if /i "%%A"=="LN" set count=1
    )
    if not defined count echo del "%%Z"
    if not defined count del "%%Z"
    if defined count move "%%Z"
    echo %count%
    echo %%Z
)

但我不知道如何获取正确的目录来移动它们。我在考虑for循环,它读取相关文件的目录字符串并使用delims=/,但它继续读取文本文件而不是路径(当我没有使用引号时) %% Z,它决定无法找到该文件)。

1 个答案:

答案 0 :(得分:0)

这是未经测试的 - 它使用robocopy*.txt文件移动到源文件夹之外的新位置(由于循环复制限制),然后将它们移回新的"C:\Work\InProgress" 1}}文件夹。

如果%temp%c:\work位于同一个驱动器上,那么它应该很快。

将这两个地方的c:\work更改为包含少量copies个文件的测试文件夹并对其进行测试。

@echo off
robocopy "C:\Work" "%temp%\temporarymoviefolder"            *.txt /s /mov
robocopy "%temp%\temporarymoviefolder" "C:\Work\InProgress" *.txt /s /mov
pause