用于整理文件夹的简单批处理脚本

simple batch script for tidy up folder

例如,我在我的 PC 桌面上放置了一个如下所示的 for 循环,以便将所有文件移动到以其扩展名命名的相应文件夹中。

for %%G in (*.*) do (
md "%%~xG" 2>nul
move "%%G" "%%~xG"
)

到目前为止脚本没问题,我想用以下内容改进它,

  1. 仅当文件夹不存在时创建文件夹
  2. make folder by parameter expansion会创建一个文件夹.jpg,但我想要的是jpg,我可以使用set x=%%~xG之类的东西,setlocal和EnabledDelayExpansion,然后!x:~1!到 trim 点
  3. 不要将批处理文件本身移动到创建的 bat 文件夹中。我应该使用像 %f0 这样的扩展吗?

如有任何帮助,我们将不胜感激。

setlocal enabledelayedexpansion
for %%a in (*.*) do (

    if not "%%~xa"=="" (
        set "ext=%%~xa" & set "ext=!ext:~1!"
        if not exist "!ext!" mkdir "!ext!" 2>nul

        if not "%%~fa"=="%~f0" (
            move "%%a" "!ext!\%%a" >nul
        )
    )
)
endlocal

写作时,我意识到@Stephan 的评论与此答案相同,因此优先考虑他!