Win7中根据列表自动将文件移动到各个子文件夹
Automated move of files to various subfolders based on list in Win7
我的工作需要将很多文件移动到不同的文件夹。我能够从我们的内部网页获得一份人类可读的列表,其中列出了哪些文件去了哪里。我想做的是在 Windows 7.
上自动执行文件移动过程
我有大约 450 个文件,所有文件都用数字和字母命名,例如1.mp4、2.mp4、2a.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 多个文件重复此操作。
我可以让我们的网站管理员生成与现在不同格式的列表,但是像这样移动文件的最佳方式是什么?我想使用批处理脚本,或者任何不需要特殊软件的东西。越防呆越好
@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
ed 用于测试目的。 确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加 >nul
以禁止报告消息(例如 1 file moved
)
这很简单!
我的工作需要将很多文件移动到不同的文件夹。我能够从我们的内部网页获得一份人类可读的列表,其中列出了哪些文件去了哪里。我想做的是在 Windows 7.
上自动执行文件移动过程我有大约 450 个文件,所有文件都用数字和字母命名,例如1.mp4、2.mp4、2a.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 多个文件重复此操作。
我可以让我们的网站管理员生成与现在不同格式的列表,但是像这样移动文件的最佳方式是什么?我想使用批处理脚本,或者任何不需要特殊软件的东西。越防呆越好
@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
ed 用于测试目的。 确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加 >nul
以禁止报告消息(例如 1 file moved
)
这很简单!