0

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

C:\Temp\874540_MyVacation1_x.jpg

C:\Temp\451157_MyVacation2_x.jpg

C:\Temp\874211_MyVacation3_x.jpg

C:\Temp\652120_MyVacation4_x.jpg

C:\Temp\541547_MyVacation5_x.jpg

C:\Temp\321778_MyVacation6_x.jpg

我试图摆脱前 7 个字符,并xbz. 所以它看起来像这样:

C:\Temp\MyVacation1_bz.jpg

C:\Temp\MyVacation2_bz.jpg

C:\Temp\MyVacation3_bz.jpg

C:\Temp\MyVacation4_bz.jpg

C:\Temp\MyVacation5_bz.jpg

C:\Temp\MyVacation6_bz.jpg

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

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

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

2 回答 2

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"
)
于 2013-10-05T18:04:25.820 回答
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
我的假期1_bz.jpg
我的假期2_bz.jpg
MyVacation2_cindy_bz.jpg
我的假期3_bz.jpg
MyVacation3_Terri_bz.jpg

于 2013-10-06T02:37:06.200 回答