0

我将其视为参考:批处理文件将具有某些扩展名的文件从多个目录复制到一个目录中

我在 [子] 文件夹中包含大约 300k+ 个文件,其中许多文件类型需要根据文件扩展名移动到文件夹中。我需要帮助形成 cmd 以根据扩展名将文件放在相应的文件夹中。

模拟伪代码:

for /R C:\Recovery %f.%EXT move %f C:\RecoverySorted\%EXT

上面的代码当然不能正常工作。需要帮助修改。

如果可以对非扩展文件进行错误检查,那也很棒。我注意到一些没有扩展名的文件。谢谢!

4

2 回答 2

2
@ECHO OFF
SETLOCAL
FOR /f "delims=" %%i IN ('dir /s /b /a-d') DO (
 IF NOT "%%~xi"=="" MD "c:\destdir\%%~xi" 2>NUL
 ECHO MOVE "%%i" "c:\destdir\%%~xi"
)

dir如果您不是从所需的相对根目录开始,请在子句中包含您的源目录名称。改变destdir以适应。抑制 make-directory 上的2>nul错误消息,因为这将尝试.ext多次创建目录。添加>nul到该MOVE...行以禁止移动报告。删除该echo行以实际执行移动,而不是报告要进行的移动。首先在一个小的子树上进行测试。

于 2013-04-22T14:49:00.403 回答
2
@Echo OFF

Set "Folder=C:\windows"
Set "DestDir=C:\MySortedFiles"

FOR /R "%Folder%" %%# in ("*") DO (
    If not exist "%DestDir%\%%~x#" (MKDIR "%DestDir%\%%~x#")
    Echo [+] Moving: "%%~nx#"
    Move "%%#" "%DestDir%\%%~x#\" 1>NUL
)

Pause&Exit

注意:键入DestDir路径时不要使用最后一个斜杠 \ 。

于 2013-04-23T00:29:11.267 回答