如何在 Windows 8.1 中刪除一批檔案的部分檔案名稱?

如何在 Windows 8.1 中刪除一批檔案的部分檔案名稱?

我的資料夾中有很多文件,但它們都以一行數字開頭,並用“_”與實際文件名稱分隔

例如:

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] }

相關內容