为了我的工作,我必须将大量文件移动到不同的文件夹中。我能够从我们的内部网页获取一个人类可读的列表,列出哪些文件。我想做的是在Windows 7上自动执行文件移动过程。
我有大约450个文件,所有文件都用数字和字母命名,例如1.mp4,2.mp4,2 a.mp4等我需要将它们放入特定的文件夹中,也编号。例如。文件夹6431,文件夹2315。
这是我得到的清单的样本:
High Performance Dance Center (AK) - 3356
4 dances competing
Finals
#20 3:57 PM Flower Festival
#120 9:27 PM Landfill
#158 4:37 PM Ladies With An Attitude
#230 9:02 PM Sound of Silence`
Karla Pattavina's Dance Academy (AL) - 172
5 dances competing
Finals
#47 5:48 PM Turn to Stone
#69 6:54 PM Taking Flight
#93 8:06 PM All I Want
#211 8:01 PM I Look To You
#255 10:30 PM unDefined
所以文件20.mp4,120.mp4,158.mp4和230.mp4进入文件夹3356.文件47.mp4,69.mp4,93.mp4,211.mp4和255.mp4进入文件夹172.现在只需在20-40个不同的文件夹中重复400多个文件。
我可以让我们的网站管理员以不同于现在的格式生成列表,但是移动这样的文件的最佳方法是什么?我想使用批处理脚本,或者任何不需要特殊软件的东西。越是万无一失就越好。
答案 0 :(得分:0)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (q28186729.txt) DO (
CALL :analyse %%a
)
GOTO :EOF
::
:analyse
:: line may begin "#number"
SET "filename=%1"
IF "%filename:~0,1%"=="#" ECHO(move "%sourcedir%\%filename:~1%.mp4" "%destdir%\%dirname%\"&GOTO :eof
: dirnl
SET "filename=%2"
IF NOT DEFINED filename GOTO :EOF
IF "%3"=="" IF "%1"=="-" SET "dirname=%2"&MD "%destdir%\%2\" 2>nul&GOTO :EOF
SHIFT
GOTO dirnl
GOTO :eof
您需要更改sourcedir
的设置以适合您的具体情况。
我使用了一个名为q28186729.txt
的文件,其中包含我的测试数据。
为了测试目的,所需的MOVE命令仅为ECHO
。 在您确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加>nul
以取消报告消息(例如1 file moved
)
这很简单!