也许是这样的?不久前我在这里找到了这个,我一直在使用它。它将根据文件名和类型将文件移动到文件夹中。如果该文件夹不存在,它将在批处理文件的当前位置创建该文件夹。如果文件夹已经存在,它只会将其移动到该文件夹。
@echo off &setlocal
for /f "delims=" %%i in ('dir /b /a-d *.text') do (
set "filename1=%%~i"
setlocal enabledelayedexpansion
set "folder1=!filename1:~0,1!"
mkdir "!folder1!" 2>nul
move "!filename1!" "!folder1!" >nul
endlocal
)
可以更改第 2 行中的“ .pdf”以指定文件类型。您可以使用“ .*”移动所有文件类型,但这也会移动 .bat 文件和文件夹。
“~0,1!” 在第 5 行中确定查看哪些字符以确定文件夹名称。第一个数字决定了它开始查看的字符(0 是开头,1 是从开头开始的 1 个字符,等等)。第二个数字决定了它查看的字符数。如果更改为 2,它将查看文件中的前 2 个字符。
目前它被设置为只查看第一个字符并且只移动 .text 文件。对于您示例中的文件,它将移动名为“A”的文件夹的所有“Arrow”文件,并将所有“Spear”文件移动到名为“S”的文件夹中。“屏蔽”文件将保留在原处,因为它们的扩展名是 .txt,而不是 .text。如果您将“ .text”更改为“ .t*”,它会将 .txt 和 .text 文件移动到“A”和“S”文件夹中。