Batch file 批处理脚本,按文件名首字母将文件移动到新创建的文件夹中

Batch file 批处理脚本,按文件名首字母将文件移动到新创建的文件夹中,batch-file,Batch File,我已经创建了这个批处理脚本,在运行时,它会创建与文件名相同的文件夹,并将这些文件移动到新创建的文件夹中 @echo off for %%i in (*) do ( if not "%%~ni" == "organize" ( md "%%~ni" && move "%%~i" "%%~ni" ) ) 我希望对此进行修改,并执行以下操作: 对于以“22”开头的文件名(.htm)。创建一个名为“22”的文件夹并将其移到内部。 对于以“40”开头的文件名,创建一个名为“40”

我已经创建了这个批处理脚本,在运行时,它会创建与文件名相同的文件夹,并将这些文件移动到新创建的文件夹中

@echo off
for %%i in (*) do (
 if not "%%~ni" == "organize" (
  md "%%~ni" && move "%%~i" "%%~ni"
 )
)
我希望对此进行修改,并执行以下操作: 对于以“22”开头的文件名(.htm)。创建一个名为“22”的文件夹并将其移到内部。 对于以“40”开头的文件名,创建一个名为“40”的文件夹,并将其移到内部等


有人知道怎么做吗

这应该满足您的要求:

@echo off
for /f "delims=." %%i in ('dir /b /a-d') do (
if /i not "%%~ni" == "organize" (
    mkdir %%i >nul 2>&1
    move %%i.* %%i
  )
 )

请记住,这不适用于目标文件夹中可能存在的重复文件,因为您需要决定是否要覆盖这些文件。

请您分享一个完整文件名的示例(并确认它们都采用相同的格式)?当然!以下是以“20.*”和“40.*”开头的文件示例列表
20.003.11.2982 20.003.19.2960 20.003.32.5020 20.003.39.5984 20.003.51.2496 40.003.32.5191 40.003.72.3514 40.003.72.7208 40.003.81.5975
这些文件的名称都是一致的,这意味着它一直都有相同的标准吗?@GerhardBarnard是Gerhard!前两个数字总是相同的。根据您的代码,只有这样的文件需要复制,文件夹中的文件名为
organize.*
?谢谢您的回答!我试过了。它可以正确创建文件夹,但不会将文件移到其中。知道为什么吗?如果有帮助的话,所有的文件都是.htm文件。对不起,我使用了我设备上的linux命令
mv
,忘了应该是
move
你说得对,我也错过了这个。它工作得很好!非常感谢你,格哈德,我真的很感谢你的帮助!