我试图根据文件的当前位置对很多文件进行排序,例如:
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,它决定无法找到该文件)。
答案 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