代码之家  ›  专栏  ›  技术社区  ›  Shravan Vishwanathan

批量重命名具有不同文本位置的文件

  •  1
  • Shravan Vishwanathan  · 技术社区  · 8 年前

    我试图用不同的文本位置重命名文本文件。

    20170811191008_marie.txt --> marie_txt_20170811191008
    

    我有一个非常基本的重命名批处理命令来重命名循环中的文件,但我试图找出如何更改文件名中文本的位置。

    命令:

    for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni txt%%~xi"
    
    2 回复  |  直到 8 年前
        1
  •  1
  •   user6811411 user6811411    8 年前

    按照你的意愿

    for /f "tokens=1* delims=_" %%i in (
        'dir /b /a-d *_*.txt ^|findstr /i "^20[0-9]*_.*\.txt$"'
    ) do echo ren "%%i_%%j" "%%~nj_txt_%%i"
    

    > SO_45673483.cmd
    ren "20170811191008_marie.txt" "marie_txt_20170811191008"
    

        2
  •  1
  •   Compo    8 年前

    @Echo Off
    SetLocal EnableDelayedExpansion
    For /F "EOL=_ Tokens=1* Delims=_" %%A In ('Where .:??????????????_*.*') Do (
        Set "fx=%%~xB"
        Ren "%%A_%%B" "%%~nB_!fx:~1!_%%A" 2>Nul)
    

    当然,您仍然可以指定 .txt 而不是 .* 但不需要硬编码 _txt_