如何创建批处理文件以重命名文件夹中的大量文件?

use*_*962 18 windows cmd rename batch-file

我想重命名WinXP系统上文件夹中的大量文件,最好使用批处理文件.

这些文件目前的名称如下:

Vacation2010 001.jpg
Vacation2010 002.jpg
Vacation2010 003.jpg

我想将它们改为:

12月001.jpg
12月002.jpg
12月003.jpg

我该怎么执行这个操作?

RoX*_*oXX 26

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=Vacation2010
SET new=December
for /f "tokens=*" %%f in ('dir /b *.jpg') do (
  SET newname=%%f
  SET newname=!newname:%old%=%new%!
  move "%%f" "!newname!"
)
Run Code Online (Sandbox Code Playgroud)

它的作用是循环遍历批处理文件所在文件夹中的所有.jpg文件,并在文件名中替换12月的Vacation2010.


小智 11

dir /b *.jpg >file.bat
Run Code Online (Sandbox Code Playgroud)

这将为您提供如下行:

Vacation2010 001.jpg
Vacation2010 002.jpg
Vacation2010 003.jpg

在您喜欢的Windows 文本编辑器中编辑file.bat,相当于:

s/Vacation2010(.+)/rename "&" "December \1"/
Run Code Online (Sandbox Code Playgroud)

这是一个正则表达式 ; 很多编辑都支持它们,但是没有一个默认使用Windows(据我所知).在转义命令行之后,您还可以获得一个命令行工具,例如sed或perl,它可以采用我上面的确切语法.

生成的行看起来像:

重命名"Vacation2010 001.jpg""December 001.jpg"
重命名"Vacation2010 002.jpg""December 002.jpg"
重命名"Vacation2010 003.jpg""December 003.jpg"

您可以将这些行识别为重命名命令,每个文件一个来自原始列表.;)在cmd.exe中运行该批处理文件.

  • 操作系统需要这样的技巧才能简单地重命名一组文件,这是不是很糟糕,不是吗? (4认同)

gho*_*g74 6

无需手动编辑或使用花哨的文本编辑器即可轻松完成此操作.这是一个vbscript.

Set objFS = CreateObject("Scripting.FileSystemObject")
strFolder="c:\test"
Set objFolder = objFS.GetFolder(strFolder)
For Each strFile In objFolder.Files
    If objFS.GetExtensionName(strFile) = "jpg" Then    
        strFileName = strFile.Name
        If InStr(strFileName,"Vacation2010") > 0 Then           
            strNewFileName = Replace(strFileName,"Vacation2010","December")
            strFile.Name = strNewFileName
        End If 
    End If  
Next 
Run Code Online (Sandbox Code Playgroud)

另存为myscript.vbs和

C:\test> cscript //nologo myscript.vbs 
Run Code Online (Sandbox Code Playgroud)