我试图用不同的文本位置重命名文本文件。批量重命名具有不同文本位置的文件
例子:
20170811191008_marie.txt --> marie_txt_20170811191008
我有一个非常基本的重命名批处理命令在循环重命名文件,但我试图找出我怎么能更改文件名中的文本的位置。
命令:
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni txt%%~xi"
我试图用不同的文本位置重命名文本文件。批量重命名具有不同文本位置的文件
例子:
20170811191008_marie.txt --> marie_txt_20170811191008
我有一个非常基本的重命名批处理命令在循环重命名文件,但我试图找出我怎么能更改文件名中的文本的位置。
命令:
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni txt%%~xi"
根据您的愿望
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"
编辑忘了提,除去回声仁面前真正执行重命名,一旦你是舒尔它确实想要你想要的。
谢谢!! ..这工作,但是,我们可以在多个文件的文件夹内进行大规模更改吗?在同一目录下运行时找不到文件 –
这应该起作用,findstr将只使用以'20'开头的文件,并且编号为'_',因此它不会重新处理已重命名的文件。 – LotPings
谢谢!得到它了!!!像一个魅力工作:))! –
对于多个文件扩展名,你总是可以使用这样的事情:
@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_
到的代码之后它。
要重命名的文件总是具有相同的模式,即,即。 digit_alpha.txt? –
是@SamirSadek –
...而你不再需要文件扩展名! – Compo