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

时间:2017-08-14 11:26:23

标签: batch-file batch-processing batch-rename

我正在尝试使用不同的文本位置重命名文本文件。

示例:

20170811191008_marie.txt --> marie_txt_20170811191008

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

命令:

for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni txt%%~xi"

2 个答案:

答案 0 :(得分:1)

根据您的意愿

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"

编辑忘了提及删除前面的回声,以便在你确实想要的时候真正执行重命名。

答案 1 :(得分:1)

对于多个文件扩展名,您可以使用以下内容:

@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_硬编码到其后的代码中。