我有一个文件夹,里面有数千个文件,这些文件在合成器模拟器中打开。文件太多了,当我尝试浏览要打开哪个文件时,模拟器会冻结几秒钟。我想将所有文件按文件名的首字母放在子文件夹中。
我有 Total Commander。可以自动化吗?如果不行还有其他方法吗?
答案1
移动到文件夹
@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%x in ('dir /b *.ext') do (
set tmp=%%x
set tmp=!tmp:~0,1!
if not exist .\!tmp! md !tmp!
move "%%x" "!tmp!\%%x" > nul
)
endlocal
echo Done.
将与掩码(现在为 - *.ext
)匹配的文件从当前文件夹移动到子文件夹,子文件夹名称等于文件名的第一个字母。最简单的方法 - 将此批处理放入包含文件的文件夹中并执行。
*.ext
用适合您的文件的正确掩码进行替换。
有些文件可能因为文件名中包含非标准的 Unicode 符号而无法移动,并出现“文件未找到”错误。请手动移动此类文件。
更新要解决非标准符号的问题,您可以尝试使用dir /x *.ext
命令(如果 8.3 名称未被禁用则适用)。在这种情况下,您必须跳过 7 行并"tokens=4 skip=7"
在其不为空时使用第 4 个(必须验证)标记 ( )。最后 2 行的“文件未找到”错误是安全的,必须忽略。