Batch file Dos批处理文件-重命名某些文件

Batch file Dos批处理文件-重命名某些文件,batch-file,cmd,Batch File,Cmd,我只知道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

我只知道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个字符,并将
x
替换为
bz
。所以它看起来像这样:

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"  ????

这里有一种方法

@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"
)
解决方案包括:


..输出示例:

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 C:\Temp>DIR/B*.JPG 451157_我的假期2_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:][uu]+]x.jpg/ren\“^&\“\”\1bz.jpg\“/ie” C:\Temp>DIR/B*.JPG 我的假期1_bob_bz.jpg 我的假期1_bz.jpg 我的假期2_bz.jpg 我的假期2_cindy_bz.jpg 我的假期3_bz.jpg 我的假期3_Terri_bz.jpg
如果可以,请尝试powershell:)更简单、功能更强大。有一种简单的方法,使用
字符作为分隔符-如果您确实想重命名所列示例文件的格式:包括以下文件:
C:\Temp\187645327321778\u我和我的狗一起度假,spot 6_x.jpg
啊,我曾想过使用子字符串提取和替换,但为/f“delims=\ux”再添加一次
,这无疑会使工作更轻松,而且也是一种更优雅的方式(如果批处理脚本有什么优雅之处的话).OK-相同的请求但涉及不同的文件模式:C:\Temp\874540_MyVacation1_bob_x.jpg C:\Temp\451157_MyVacation2_cindy_x.jpg C:\Temp\874211_MyVacation3_Terri_x.jpg C:\Temp\652120_MyVacation4_Noel terriu x.jpg重命名为:C:\Temp\MyVacation1_bob_bz.jpg C:\Temp\MyVacation2_cindy_bz.jpg C:\Temp\u myvacationC:\Temp\MyVacation4\u Noel\u bz.jpg
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