【问题标题】:Renaming start of all file names in folder before first underscore在第一个下划线之前重命名文件夹中所有文件名的开始
【发布时间】:2016-05-11 09:27:20
【问题描述】:

在一个批处理文件中,我想重命名一个文件夹中所有文件的开头,此时的文件是这样命名的

1_sometext 2_sometext ... 467_sometext

这导致了一个问题,当在目录上调用 dir 时,我需要这些文件以正确的顺序出现

我希望它们看起来像 001_sometext 002_sometext 003_sometext ... 467_sometext

这样,当我需要它们时,它们总是会按顺序出现

这如何在批处理文件中完成?

【问题讨论】:

    标签: windows batch-file command-line command


    【解决方案1】:

    这将根据需要重命名您的文件:

    @echo off
    set YOUR_DIR=%1
    setlocal enabledelayedexpansion
    set temp_str=something
    for /f "tokens=*" %%L in ('dir /b %YOUR_DIR%' ) do (
          set INITIAL_NAME=%%L
           for /f "tokens=1 delims=_" %%a in ("%%L") do (
                set INTEGER_PART=%%a
                SET temp_str=!INTEGER_PART!
            )
    
             call :GET_STR_LEN
             if "!str_len!"=="1" (
                set PREFIX=00
             ) else (
                 if "!str_len!"=="2" (
                     set PREFIX=0
                  ) else (
                       set PREFIX=
                    )
    
                 ) 
    
    
            pushd %YOUR_DIR%
            echo The file is %%L
            set NEW_NAME=!PREFIX!%%L
            echo The new name is !NEW_NAME!
            REN "%%L" "!NEW_NAME!"
            popd
    
        )
    
    :GET_STR_LEN
    SET /a str_len=0
    
    :loop
    if defined temp_str (
    SET temp_str=!temp_str:~1!
    SET /A str_len=str_len+1
    GOTO loop
    )
    
    exit /b
    

    将它放在一个名为 rename_files.bat 的批处理文件中并执行为: 重命名文件“你的目录”

    【讨论】:

    • 太好了,谢谢!