我有一个包含数百万张小图片的文件夹。我想将第一个12.288文件放在一个文件夹中,然后将另一个12.288文件放在另一个文件夹中,依此类推......总是根据文件名的第一部分。这些文件的名称如下:
GRID_00000_01
GRID_00000_02
,直到
GRID_00000_12288
然后是下一组文件:
GRID_00001_01
,直到
GRID_00001_12288
这一直持续到GRID_12288_12288
我希望批处理为所有以该文件名开头的文件创建一个文件夹GRID_00000
,然后将所有文件放入其中。然后它必须对下一组文件执行相同操作,依此类推。我不知道自己是否清楚,因为我对编程知之甚少。
我的系统是Windows 8.1
调用source-directory:
D:\photoshop\test\grid_04\droplet\Bilder
调用目标目录:
D:\photoshop\test\grid_04\droplet\geordnet
我在互联网上找到了这个:
@echo off
for /f %%a in ('dir /a-d /b') do (
if not "%%~dpnxa"=="%~dpnx0" call :func "%%~a"
)
goto :EOF
:func
set file=%~1
set dir=%file:~0,10%
md "T%dir%" 2>nul
move "%file%" "T%dir%"
goto :EOF
它没有指定目标目录。但实际上它并不是必需的。如果在原始文件夹中创建文件夹,那也很好。
答案 0 :(得分:1)
@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "tokens=1,2,*delims=_" %%a IN ('dir /b /a-d "%sourcedir%\grid_*_*" ') DO (
ECHO(MD "%destdir%\%%a_%%b" 2>nul
ECHO(MOVE "%sourcedir%\%%a_%%b_%%c" "%destdir%\%%a_%%b\%%a_%%b_%%c"
)
GOTO :EOF
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
所需的MD命令仅用于ECHO
用于测试目的。 在您确认命令正确无法后,将ECHO(MD
更改为MD
以实际创建目录。 2>nul
会抑制错误消息(例如,当目录已存在时)
为了测试目的,所需的MOVE命令仅为ECHO
。 在您确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加>nul
以取消报告消息(例如1 file moved
)