我将此视为参考:batch file Copy files with certain extensions from multiple directories into one directory
我的[sub]文件夹中包含大约300k +文件,其中有许多文件类型需要根据文件扩展名移动到文件夹。我需要帮助形成cmd,根据扩展名将文件放在相应的文件夹中。
Simi-Pseudo代码:
for /R C:\Recovery %f.%EXT move %f C:\RecoverySorted\%EXT
上面的代码当然不能正常工作。需要帮助修改。
如果可能对非扩展文件进行错误检查也会很好。我注意到一些没有扩展名的文件。谢谢!
答案 0 :(得分: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
以适应。 2>nul
会抑制make-directory上的错误消息,因为这会尝试多次创建目录.ext
。将>nul
添加到MOVE...
行以取消移动报告。删除该行上的echo
以实际执行移动,而不是报告要进行的移动。首先在一个小子树上进行测试。
答案 1 :(得分: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 路径时,请勿使用最后一个斜杠。