使用批处理文件转移文件名

时间:2016-03-31 20:54:25

标签: batch-file batch-rename

这是文件名格式。前导数字是图层,第二个数字是材料(3D打印机)。

01118_7.tif,
01118_6.tif,
01118_5.tif,
01118_4.tif,
01118_3.tif,
01118_2.tif,
01118_1.tif,
01118_0.tif

我需要做的是将以_1,_4,_6结尾的文件移位六个位置。所以,01124_1,01124_4,01124_6而其余文件保持不变。我需要一直到层00112 _ *。

如果可以,我想通过批处理文件执行此操作。试图按照指南,但名称格式绊倒了我。 Basic excel format

2 个答案:

答案 0 :(得分:1)

我无法判断您是否需要修改文本文件中出现的文件名,或者是否需要重命名文件。无论哪种方式,我都有一个使用两个混合JScript /批处理正则表达式实用程序之一的简单解决方案:

使用JREPL.BAT修改文本文件中的文件名:

jrepl "^\d{5}(?=_[146]\.tif)" "lpad(Number($0)+6,'00000')" /i /j /f test.txt /O -


使用JREN.BAT重命名当前目录中的文件:

jren "^\d{5}(?=_[146]\.tif$)" "lpad(Number($0)+6,'00000')" /i /j

如果您将命令放在批处理脚本中,请使用call jreplcall jren

答案 1 :(得分:0)

我花了一段时间才明白,将文件名称移位六个位置"真的意味着"在文件名中添加六个"。

@echo off
setlocal EnableDelayedExpansion

set "numbers=/1/4/6/"
for /F "tokens=1,2 delims=_." %%a in ('dir /B /A-D *.tif') do (
   if "!numbers:/%%b/=!" neq "%numbers%" (
      set "newNum=1%%a+6"
      ECHO ren "%%a_%%b.tif" "!newNum:~1!_%%b.tif"
   )
)

如果名称不在文件中,但是文本行放在文本文件中,请将'dir /B /A-D *.tif'命令更改为文本文件的名称。