我的資料夾中有很多文件,但它們都以一行數字開頭,並用“_”與實際文件名稱分隔
例如:
123123123_檔名.txt
456456456_檔名2.txt
789789789_檔名3.txt
我想您可以運行某種命令,以便它刪除“_”和“_”本身之前的字元。
任何幫助是極大的讚賞!
答案1
如果您對 PowerShell 不滿意,您可能想看看免費實用程序,例如: http://www.bulkrenameutility.co.uk/Download.php
答案2
如果您只想刪除清單中的字符,可以將以下內容放入批次檔中,取代相關目錄dirname
for /f "tokens=2 delims=_" %%G in ('dir /b dirname') do @echo %%G
產生dir /b
一個裸格式目錄清單(沒有標題資訊或摘要)。表示delims=_
應使用底線作為分隔符,而tokens=2
表示您需要底線後面的內容。看為/FFOR /F
有關如何在批次文件中使用的更完整說明。
filename2.txt
但是,如果您想重新命名不帶數字和下劃線的文件,那麼在您的範例中,如果去掉數字和下劃線,您有兩個文件將產生名稱。在這種情況下你想做什麼?或者您打算將 filename3.txt 用於第三個檔案?
如果下劃線後面的是唯一名稱,您可以使用以下命令重命名文件,將相應的目錄替換為相關目錄:
set dirname="relevantdir"
for /f "tokens=1,2 delims=_" %%G in ('dir /b %dirname%') do rename %dirname%\%%G_%%H %%H
在上面的例子中,第一個標記%%G
是下劃線之前的內容,第二個標記%%H
是下劃線之後的內容。我將它們放回一起以進行重命名操作,並在它們前面加上目錄,因為重命名命令使用語法RENAME [drive:][path]filename1 filename2
.
如果您不想看到每個重命名操作發生時的情況,請將 an@echo off
作為批次檔中命令前的第一行。set
答案3
powershell
ls "*_*.txt" | %{mv -confirm:$false $_.name ($_.name).split("_")[1]}
在 Win8 上 powershell 應該是更好的選擇。
答案4
PowerShell:假設資料夾中的所有檔案都需要重新命名(正如OP所暗示的那樣):
$Folder = 'c:\path\to\folder'
gci $Folder | Rename-Item -NewName { $_.Name.Split('_')[-1] }