我想重命名WinXP系統上的文件夾中的大量文件,最好使用批處理文件。如何創建批文件以重命名文件夾中的大量文件?
文件被命名爲目前像這樣:
Vacation2010 001.JPG
Vacation2010 002.JPG
Vacation2010 003.JPG
,我想將其更改爲:
December December 001.jpg
De cember 002.jpg
December 003.jpg
我該如何執行此操作?
我想重命名WinXP系統上的文件夾中的大量文件,最好使用批處理文件。如何創建批文件以重命名文件夾中的大量文件?
文件被命名爲目前像這樣:
Vacation2010 001.JPG
Vacation2010 002.JPG
Vacation2010 003.JPG
,我想將其更改爲:
December December 001.jpg
De cember 002.jpg
December 003.jpg
我該如何執行此操作?
dir /b *.jpg >file.bat
這會給你行如:
Vacation2010 001.JPG
Vacation2010 002.JPG
Vacation2010 003.JPG
編輯file.bat在favorite Windowstext-editor,這樣做相當於:
s/Vacation2010(.+)/rename "&" "December \1"/
這是一個regex;許多編輯支持他們,但沒有任何Windows默認(據我所知)。你也可以得到一個命令行工具,比如sed或perl,它們可以在命令行轉義之後採用我上面的確切語法。
產生的線條看起來像:
重命名 「Vacation2010 001.JPG」 「十二月001.JPG」
重命名 「Vacation2010 002.JPG」 「十二月002.JPG」
重命名「Vacation2010 003.jpg「」December 003.jpg「
您可能會將這些行識別爲重命名命令,即原始列表中的每個文件一行。 ;)在cmd.exe中運行該批處理文件。
dir/b標誌是非常有用的,不是嗎? – 2010-09-27 22:24:36
@Jim:不像cygwin下的* ls *那麼有用! :)目錄/秒也undereppreciated。 – 2010-09-27 22:26:11
操作系統很可能需要這樣的技巧來簡單地重命名一組文件,不是嗎? – bluish 2011-01-24 14:23:09
你可以做到這一點很容易,無需人工編輯或使用花哨的文本編輯器。這是一個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
@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內文件名。
要重命名所選文件,我們可以指定文件名爲AB.jpg,ABC.jpg,ABCD.jpg嗎? – 2016-08-17 14:24:30
@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
]你有你想改變[或刪除]字符串和_with
以字符串值改變_toEdit
值相同的工作,你想要替代_toEdit
[SET "_with="
如果您只是想擦除在_toEdit
中指定的字符串]。
你並不需要一個批處理文件,只是這樣做從PowerShell的:
powershell -C "gci | % {rni $_.Name ($_.Name -replace 'Vacation2010', 'December')}"
你可能喜歡[XYplorer(http://www.xyplorer.com/),我用了几几年之後,直到我在家中停止使用Windows。它有一個批量重命名界面來處理這種情況,而不需要編程,而且非常值得花錢。 – 2010-09-27 22:46:56
@Roger批量重命名實用程序(http://www.bulkrenameutility.co.uk)是一個非常好的工具,它是免費的。 – bluish 2011-01-24 14:24:56