批处理:将文件移动到名称的第一个字母的文件夹?

时间:2016-02-26 08:14:39

标签: batch-file

我想要3个文件夹,A-G,H-T和U-Z。我希望根据名称的第一个字母,通过批量自动将文件分类到这些文件夹中。有什么办法吗?谢谢!

1 个答案:

答案 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

您需要更改sourcedirdestdir的设置以适合您的具体情况。

为了测试目的,所需的COPY命令仅为ECHO在您确认命令正确后,将ECHO(COPY更改为COPY以实际复制文件。附加>nul以取消报告消息(例如1 file copied

困难的部分是比较名称(大于Z的东西)。不幸的是,[{都不适合这个职位。 if[{视为低于A - 甚至是数字......

因此,对于以z开头的文件名,请使用特定的测试。