我正在尝试使用不同的文本位置重命名文本文件。
示例:
20170811191008_marie.txt --> marie_txt_20170811191008
我有一个非常基本的重命名批处理命令来循环重命名文件,但我试图找出如何更改文件名中文本的位置。
命令:
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni txt%%~xi"
答案 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_
硬编码到其后的代码中。