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

时间:2010-09-27 21:23:04

标签: windows batch-file rename cmd

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

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

  

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

我想将它们改为:

  

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

我该如何执行此操作?

5 个答案:

答案 0 :(得分: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!"
)

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

答案 1 :(得分:10)

dir /b *.jpg >file.bat

这将为您提供如下行:

  

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

favorite Windows text-editor中修改file.bat,相当于:

s/Vacation2010(.+)/rename "&" "December \1"/

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

结果行看起来像:

  

重命名“Vacation2010 001.jpg”“December 001.jpg”
  重命名为“Vacation2010 002.jpg”“December 002.jpg”
  重命名为“Vacation2010 003.jpg”“December 003.jpg”

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

答案 2 :(得分: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 

另存为myscript.vbs和

C:\test> cscript //nologo myscript.vbs 

答案 3 :(得分:1)

@ECHO off & SETLOCAL EnableDelayedExpansion

SET "_dir=" REM Must finish with '\'
SET "_ext=jpg"
SET "_toEdit=Vacation2010"
SET "_with=December"
FOR %%f IN ("%_dir%*.%_ext%") DO (
    CALL :modifyString "%_toEdit%" "%_with%" "%%~Nf" fileName 
    RENAME "%%f" "!fileName!%%~Xf"
)
GOTO end

:modifyString what with in toReturn
    SET "__in=%~3"
    SET "__in=!__in:%~1=%~2!"
    IF NOT "%~4" == "" (
        SET %~4=%__in%
    ) ELSE (
        ECHO %__in%
    )
    EXIT /B

:end

此脚本允许您更改包含Vacation2010的所有文件的名称,但名称相同,但December代替Vacation2010

如果您复制并粘贴代码,则必须将.bat保存在照片的同一文件夹中。 如果要将脚本保存在另一个目录中[E.G.你有一个最喜欢的实用程序文件夹]你必须用照片的路径更改_dir的值。

如果您必须为其他照片[或其他文件changig _ext执行相同的工作],您必须使用要更改[或擦除]的字符串更改_toEdit的值如果您只想删除_with]中指定的字符串,则_toEdit的值包含您要放置的字符串,而不是SET "_with=" [_toEdit

答案 4 :(得分:0)

您不需要批处理文件,只需从powershell执行此操作:

powershell -C "gci | % {rni $_.Name ($_.Name -replace 'Vacation2010', 'December')}"