我希望能使用一个批处理文件在WinXP系统中将一个文件夹中的大量文件进行重命名。
这些文件当前被命名为:
Vacation2010 001.jpg
Vacation2010 002.jpg
Vacation2010 003.jpg
我想将它们改为:
December 001.jpg
December 002.jpg
December 003.jpg
如何执行此操作?
我希望能使用一个批处理文件在WinXP系统中将一个文件夹中的大量文件进行重命名。
这些文件当前被命名为:
Vacation2010 001.jpg
Vacation2010 002.jpg
Vacation2010 003.jpg
我想将它们改为:
December 001.jpg
December 002.jpg
December 003.jpg
如何执行此操作?
@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" 替换为 "December"。
dir /b *.jpg >file.bat
s/Vacation2010(.+)/rename "&" "December \1"/
这是一个正则表达式; 许多编辑器支持它们,但是据我所知,没有任何默认附带Windows的编辑器支持。您还可以获取命令行工具,例如sed或perl,它可以接受我上面提到的精确语法,需要在命令行中进行转义。
生成的行将如下所示:
rename "Vacation2010 001.jpg" "December 001.jpg"
rename "Vacation2010 002.jpg" "December 002.jpg"
rename "Vacation2010 003.jpg" "December 003.jpg"
您可以将这些行识别为重命名命令,每个文件从原始列表重新命名一个。 ;) 在cmd.exe中运行批处理文件。
您可以轻松地完成此操作,无需手动编辑或使用高级文本编辑器。以下是一段VB脚本。
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
@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
保存在照片所在的同一文件夹中。
如果你想将脚本保存在另一个目录中[例如你有一个喜欢的实用程序文件夹],你必须将_dir
的值更改为照片的路径。_ext
的文件],你必须将_toEdit
的值更改为你想要更改[或删除]的字符串,并将_with
的值更改为你想要放置在_toEdit
之前的字符串[如果你只想删除_toEdit
中指定的字符串,则设置SET "_with="
]。您不需要批处理文件,只需从PowerShell执行以下操作:
powershell -C "gci | % {rni $_.Name ($_.Name -replace 'Vacation2010', 'December')}"