如何使用通配符刪除名稱中帶有“-copy”的檔案?

如何使用通配符刪除名稱中帶有“-copy”的檔案?

我有一個問題,看來如何刪除名稱中含有指定文字的檔案?會刪除我不想刪除的內容。

由於安裝額外的內部硬碟並按照以下說明移動我的 OneDrive 資料夾後出現 OneDrive 問題微軟支援,我不知道我做錯了什麼,但現在我已將所有檔案複製到新硬碟,而 OneDrive 正在與每個檔案- copy名稱末尾的副檔名之前的重複檔案同步。這是數千個文件中千兆位元組的資料。

當查看在 Powershell 或 cmd.exe 中使用時會刪除哪些內容時*- copy.*,似乎我創建的檔案 (copy.bat) 將被刪除,而我想保留該檔案。

如何使用通配符刪除- copy檔案名稱末尾的所有內容,但保護 copy.bat 等檔案?

答案1

目前發生的情況是 your*- copy.*被解析為兩個空格分隔的參數:*-copy.*。一旦您看到這一點,就很容易認識到其中第二個將與您的copy.bat文件相符。

解決方法是將不變部分用雙引號括起來(具體來說,確保空格位於雙引號內)*"- copy".*::

DIR *"- copy".*

Get-ChildItem *"- copy".*

由於這是 Windows,您實際上也可以不用引用*,因為它是由命令而不是 Powershell/CMD 工具解析的:

DIR "*- copy.*"

Get-ChildItem "*- copy.*"

順便說一句,如果您打算使用基於 UNIX/Linux 的系統(包括 Mac),請不要養成嘗試引用通配符並期望它充當模式的習慣,因為它不會t:它將被解析為字面星號。我的第一個建議在任何地方都適用。第二個建議是特定於 Windows 的。

答案2

.bat檔案不需要與要刪除的檔案位於同一資料夾中。您可以透過運行從另一個資料夾運行它 \path\copy.bat

如果還有更多文件受到影響copy.bat,則需要在運行之前將它們複製到其他地方copy.bat

您也可以在 PowerShell 中使用比 CMD 中可用的原始表達式更複雜的正規表示式。如果您可以更好地定義它們的命名規則,那麼您可以優化正規表示式以包含更少的檔案。

答案3

看看一個有用的免費工具 - 批量重命名實用程式。https://www.bulkrenameutility.co.uk

它可以遞歸掃描和預覽批次重命名任務,並且非常有用,因為它具有預覽功能。請注意 - 您必須先進行備份。這是一個強大的工具,提交後沒有任何撤銷選項。

相關內容