【问题标题】:moving files to folders based on extension根据扩展名将文件移动到文件夹
【发布时间】:2016-02-22 16:41:28
【问题描述】:

最后我必须根据扩展名将具有不同扩展名的文件移动到文件夹中,但我无法摆脱“。”在创建的文件夹之前...这是我的批处理文件:

for %%i in (*) do mkdir "%%~xi" & move "%%i" "%%~xi"

请帮我去掉那个点。谢谢

【问题讨论】:

    标签: file batch-file directory


    【解决方案1】:

    一种方式:

    setlocal enabledelayedexpansion
    for %%i in (*) do (
        set ext=%%~xi
        set ext=!ext:~1!
        mkdir "!ext!" 
        move "%%i" "!ext!"
    )
    

    【讨论】:

    • 你应该在你的集合语句周围加上引号,例如set "x=!x:~1!"
    【解决方案2】:

    您所做的只是在文件扩展名之后创建一个文件夹名称。要删除点,您需要做的就是删除第一个字符。

    setlocal enabledelayedexpansion
    for %%i in (*) do (   
       set "x=%%~xi"   
       set x=!x:~1,400!  
       mkdir "!x!"
       move "%%i" "!x!" 
    )  
    pause  `
    

    如果您只是想重命名文件夹:

    @echo off
    setlocal enabledelayedexpansion
    for /f "delims=" %%D in ('dir /a:d /b') do (
       set x=%%D
       set x=!x:~1,100!
       set y=!x:~0,1!
       if "!y!"=="." (
            rename "%%D" "!x!"
      )
     )
    pause
    

    【讨论】:

    • 你应该在你的集合语句周围加上引号,例如set "x=!x:~1!",您可以更轻松地使用 !x:~1! 而不是 !x:~1,400!