Dos批处理文件 - 重命名一些文件

时间:2013-10-05 17:06:32

标签: batch-file cmd

我只知道DOS中的基本命令行。我听说有一个变量可以用来重命名目录中的文件。我所拥有的是以下内容:

  

C:\温度\ 874540_MyVacation1_x.jpg

     

C:\温度\ 451157_MyVacation2_x.jpg

     

C:\温度\ 874211_MyVacation3_x.jpg

     

C:\温度\ 652120_MyVacation4_x.jpg

     

C:\温度\ 541547_MyVacation5_x.jpg

     

C:\温度\ 321778_MyVacation6_x.jpg

我正在尝试删除前7个字符,并将x替换为bz。所以它看起来像这样:

  

C:\温度\ MyVacation1_bz.jpg

     

C:\温度\ MyVacation2_bz.jpg

     

C:\温度\ MyVacation3_bz.jpg

     

C:\温度\ MyVacation4_bz.jpg

     

C:\温度\ MyVacation5_bz.jpg

     

C:\温度\ MyVacation6_bz.jpg

我确信有很多基于Windows(免费软件)的应用程序可以一次重命名多个文件。我只是想提高我的DOS命令知识。

我知道这真的很糟糕 - 但是有人能指出我在正确的方向吗?

@ echo
cd\
c:
cd temp
ren "%[1-9]%_MyVacation%_x.jpg"  ????

2 个答案:

答案 0 :(得分:2)

这是一种方法。

@echo off
cd /d c:\temp
for /f "delims=" %%F in ('dir /b /a-d^|findstr /rx "[0-9]*_MyVacation[0-9]*_x\.jpg") do (
  for /f "delims=_ tokens=2" %A in ("%%F") do ren "%%F" "%%A_bz.jpg"
)

答案 1 :(得分:0)

sed for Windows的解决方案:

cd /d C:\TEMP
dir /b *.jpg|sed -nr "s/^[0-9]+_([[:alnum:]_]+)x.jpg/ren \"^&\" \"\1bz.jpg\"/ie"

..输出示例:

C:\Temp>DIR /B *.JPG
451157_MyVacation2_cindy_x.jpg
451157_MyVacation2_x.jpg
874211_MyVacation3_Terri_x.jpg
874211_MyVacation3_x.jpg
874540_MyVacation1_bob_x.jpg
874540_MyVacation1_x.jpg

C:\Temp>dir /b *.jpg|sed -nr "s/^[0-9]+_([[:alnum:]_]+)x.jpg/ren \"^&\" \"\1bz.jpg\"/ie"

C:\Temp>DIR /B *.JPG
MyVacation1_bob_bz.jpg
MyVacation1_bz.jpg
MyVacation2_bz.jpg
MyVacation2_cindy_bz.jpg
MyVacation3_bz.jpg
MyVacation3_Terri_bz.jpg