我想要3个文件夹,A-G,H-T和U-Z。我希望根据名称的第一个字母,通过批量自动将文件分类到这些文件夹中。有什么办法吗?谢谢!
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir\t w o"
SET "destdir=U:\destdir"
PUSHD "%sourcedir%"
FOR %%a IN (*) DO (
IF /i "%%a" geq "a" IF /i "%%a" lss "h" ECHO(MOVE "%sourcedir%\%%a" "%destdir%\A-G\"
IF /i "%%a" geq "h" IF /i "%%a" lss "u" ECHO(MOVE "%sourcedir%\%%a" "%destdir%\H-T\"
IF /i "%%a" geq "u" (
IF /i "%%a" lss "z" (ECHO(MOVE "%sourcedir%\%%a" "%destdir%\U-Z\"
) ELSE (
SET "name=%%a"
IF /i "!name:~0,1!"=="Z" ECHO(MOVE "%sourcedir%\%%a" "%destdir%\U-Z\"
)
)
)
popd
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
为了测试目的,所需的COPY命令仅为ECHO
。 在您确认命令正确后,将ECHO(COPY
更改为COPY
以实际复制文件。附加>nul
以取消报告消息(例如1 file copied
)
困难的部分是比较名称(大于Z的东西)。不幸的是,[
和{
都不适合这个职位。 if
将[
和{
视为低于A
- 甚至是数字......
因此,对于以z
开头的文件名,请使用特定的测试。