如何使用通配符删除名称中带有“-copy”的文件?

如何使用通配符删除名称中带有“-copy”的文件?

我有一个问题,看起来如何删除名称中带有指定文本的文件?会删除我不想删除的内容。

由于在安装额外的内置硬盘并按照以下说明移动我的 OneDrive 文件夹后,OneDrive 出现问题Microsoft 支持,我不知道我做错了什么,但现在我已将所有文件复制到新硬盘上,OneDrive 正在同步每个文件的副本,- copy每个文件名末尾都有扩展名。这是数千个文件中的 GB 数据。

当查看在 Powershell 或 cmd.exe 中使用时会被删除的内容时*- copy.*,似乎我创建的文件(copy.bat)会被删除,而我想保留那个文件。

如何使用通配符删除- copy文件名末尾的所有内容但保护诸如 copy.bat 之类的文件?

答案1

目前发生的情况是,您的*- copy.*被解析为两个空格分隔的参数:*-copy.*。一旦您看到这个,就很容易认识到其中第二个将与您的copy.bat文件匹配。

修复方法是用双引号括住不变部分(具体来说,确保空格位于双引号内)*"- copy".*::

DIR *"- copy".*

Get-ChildItem *"- copy".*

因为这是 Windows,所以您实际上也可以引用它*,因为它是由命令而不是 Powershell/CMD 工具解析的:

DIR "*- copy.*"

Get-ChildItem "*- copy.*"

另外,如果您打算使用基于 UNIX/Linux 的系统(包括 Mac),请不要养成尝试引用通配符并期望它充当模式的习惯,因为它不会:它将被解析为文字星号。我的第一个建议适用于任何地方。第二个建议是特定于 Windows 的。

答案2

.bat文件不需要与要删除的文件位于同一文件夹中。您可以通过运行 来从另一个文件夹运行它 \path\copy.bat

如果除了之外还有更多文件受到影响copy.bat,则需要在运行之前将它们复制到其他地方copy.bat

您还可以在 PowerShell 中使用比 CMD 中可用的原始正则表达式更复杂的正则表达式。然后,如果您可以更好地定义它们的命名规则,您可以优化正则表达式以包含更少的文件。

答案3

看看一个有用的免费工具——批量重命名实用程序。https://www.bulkrenameutility.co.uk

它可以递归扫描和预览批量重命名任务,并且非常有用,因为它有预览功能。请注意 - 您必须先进行备份。这是一个强大的工具,提交后没有任何撤消选项。

相关内容