如果我在一個目錄中有多個文件,並且想要將某些內容附加到它們的文件名中,但不是擴展名,那我該如何做?在cmd中重命名多個文件
我曾嘗試以下,以測試文件file1.txt
和file2.txt
:
ren *.txt *1.1.txt
這將重命名文件file1.1.txt
和file2.txt1.1.txt
我要的文件是file1 1.1.txt
和file2 1.1.txt
威爾這可能從CMD或我需要有一個bat文件來做到這一點?那麼PowerShell呢?
如果我在一個目錄中有多個文件,並且想要將某些內容附加到它們的文件名中,但不是擴展名,那我該如何做?在cmd中重命名多個文件
我曾嘗試以下,以測試文件file1.txt
和file2.txt
:
ren *.txt *1.1.txt
這將重命名文件file1.1.txt
和file2.txt1.1.txt
我要的文件是file1 1.1.txt
和file2 1.1.txt
威爾這可能從CMD或我需要有一個bat文件來做到這一點?那麼PowerShell呢?
for /f "delims=" %%i in ('dir /b /a-d *.txt') do ren "%%~i" "%%~ni 1.1%%~xi"
如果使用簡單for
迴路中無需/f
參數,已重命名的文件將被再次改名。
」%%〜ni 1.1 %%〜xi「中的'〜n'代表什麼?我不明白它是如何工作的... – ocrampico
試試這個Bulk Rename Utility它運作良好。也許不會重新發明輪子。如果你不需要腳本,這是一個好方法。
@echo off
for %%f in (*.txt) do (
ren "%%~nf%%~xf" "%%~nf 1.1%%~xf"
)
對於有人不會運行:對於(* .txt)中的%f做(ren「%〜nf%〜xf」「%〜nf 1.1%〜 xf「) – nyconing
確保有更多的?
以外還有名字最長字符:
ren *.txt "???????????????????????????? 1.1.txt"
更多信息,請參見How does the Windows RENAME command interpret wildcards?。
新的解決方案 - 2014年12月1日
對於那些誰像正則表達式,有JREN.BAT - 混合的JScript /批處理命令行實用工具,將在從XP向前任何版本的Windows上運行。
jren "^.*(?=\.)" "$& 1.1" /fm "*.txt"
或
jren "^(.*)(\.txt)$" "$1 1.1$2" /i
+1'????????????????????????????'你知道文件名可以存在多長時間嗎?是嗎? –
絕對最大文件名長度爲255個字符。但是大多數場景的實際限制較少,因爲Windows UI支持的最大總路徑長度爲259個字符。總路徑長度包括音量,文件夾和文件名稱信息以及空終止符。有關更多信息,請參見http://msdn.microsoft.com/en-us/library/aa365247.aspx。 – dbenham
感謝您介紹jren,這正是我所需要的,簡單快速。順便說一下,它可以使用[簡寫字符類](http://www.regular-expressions.info/shorthand.html),如'\ d'或'\ w'。 – Armfoot
我被這個困惑也...不喜歡把窗戶當你在批量重命名的括號內。在我的研究中,我決定用PowerShell編寫腳本。超級簡單,像魅力一樣工作。現在我可以使用它,每當我需要批處理文件重命名...這是頻繁的。我拍數百張照片和相機命名他們IMG1234.JPG等等
這裏是我寫的劇本:
# filename: bulk_file_rename.ps1
# by: subcan
# PowerShell script to rename multiple files within a folder to a
# name that increments without (#)
# create counter
$int = 1
# ask user for what they want
$regex = Read-Host "Regex for files you are looking for? ex. IMG*.JPG "
$file_name = Read-Host "What is new file name, without extension? ex. New Image "
$extension = Read-Host "What extension do you want? ex. .JPG "
# get a total count of the files that meet regex
$total = Get-ChildItem -Filter $regex | measure
# while loop to rename all files with new name
while ($int -le $total.Count)
{
# diplay where in loop you are
Write-Host "within while loop" $int
# create variable for concatinated new name -
# $int.ToString(000) ensures 3 digit number 001, 010, etc
$new_name = $file_name + $int.ToString(000)+$extension
# get the first occurance and rename
Get-ChildItem -Filter $regex | select -First 1 | Rename-Item -NewName $new_name
# display renamed file name
Write-Host "Renamed to" $new_name
# increment counter
$int++
}
我希望這是有幫助的人在那裏。
副掃描
以下命令可以完成這項工作。
forfiles /M *.txt /C "cmd /c rename @file \"@fname 1.1.txt\""
+1我認爲這是最容易記住的,比cmd的'for'語法簡單得多,但令人失望的是它必須爲每次迭代產生一個新的cmd.exe進程。這使得糖蜜非常低效和緩慢。 –
我試圖粘貼Endoro的命令(感謝Endoro)直接進入命令提示符添加前綴到文件,但遇到錯誤。解決辦法是減少%%至%,所以:
for /f "delims=" %i in ('dir /b /a-d *.*') do ren "%~i" "Service.Enviro.%~ni%~xi"
第1步:
選擇所有文件(Ctrl + A)
第2步:
然後選擇重命名選項
第3步:
選擇你的文件名...爲前:MYFILE
它會自動重命名爲MYFILE(01),MYFILE(02),, .....
如果您要更換空間&支架..繼續第4步
第4步:
打開Windows從當前文件夾Powershell的
第5步:
對於更換空的空間下劃線(_)
dir | rename-item -NewName {$_.name -replace [Regex]::Escape(" "),"_"}
步驟6:
對於更換左括號
dir | rename-item -NewName {$_.name -replace [Regex]::Escape("("),""}
對於更換右括號
dir | rename-item -NewName {$_.name -replace [Regex]::Escape(")"),""}
這個powershell很棒。謝謝 –
這適用於您的具體情況:
ren file?.txt "file? 1.1.txt"
是有很多的文件? –
Theres約90在一個文件夾中 – Morne
如果你願意,你也可以用UI來做到這一點。選擇所有文件,將其重命名爲「文件」,它將顯示爲文件(1),文件(2),文件(3),文件(4)等。 – Gray