【问题标题】:Batch command to check for partial filename then delete批处理命令检查部分文件名然后删除
【发布时间】:2016-01-18 21:11:51
【问题描述】:

我正在尝试创建一个批处理文件,该文件将搜索 3.5 TB 分区并删除文件名部分匹配的所有文件。

我们的文件结构设置为一个 5 位数的项目编号,然后是扩展名之前可能非常随机的后缀。例如:

54326.jpg
54326 5x6.jpg
54326 (OLD ART).jpg

这是由于无休止地忽视遵守命名约定而发生的,现在我们即将清除分配随机数据的系统。为了使问题更复杂,它分散在 4 个驱动器和总共大约 300,000 个文件夹之间。

我能够从另一个论坛找到此代码,但我不想将其移动到另一个文件夹,我只想使用项目编号删除所有实例。

for /r %%x in (54326*.*) do move "%%x" "DESTINATION"

我需要代码来使用硬盘驱动器上所有文件夹中的 5 位部分名称删除所有文件(各种扩展名)。

我正在使用 excel 将代码组合在一起,因为这将对大约 25,000 个产品编号进行。我将获得一个产品编号列表以从中删除。如果代码可以索引该txt 文件,则可以将此列表转换为.txt 文件,以便获取名称以使事情更简单。

【问题讨论】:

  • del /s /q 54326*.* 有什么问题?
  • 使用通配符的完全递归删除似乎有点冒险。我建议在运行删除之前使用dir /s 54326*.* > List_54326.txt 校对将删除的内容。
  • 如果您有一个文本文件形式的产品编号列表(每行一个项目),您可以这样做:for /F "usebackq eol=| delims=" %%F in ("\path\to\listfile.txt") do del /S /Q "%%~F*.*"

标签: batch-file command filenames delete-file partial


【解决方案1】:
dir "your location"
del /s 54326*.*

这将删除示例中以 54326 开头的文件并保留文件夹,但也会删除子文件夹中的文件。这里有几个选项:

  /P  Give a Yes/No Prompt before deleting. 
  /F  Ignore read-only setting and delete anyway (FORCE) 
  /S  Delete from all Subfolders (DELTREE)
  /Q  Quiet mode, do not give a Yes/No Prompt before deleting.

如果您有一个 .txt 文件,其中包含要删除的文件的完整列表,您可以这样做

for /f "delims=" %%f in (your_text_file.txt) do del /s "%%f"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-14
    • 2023-04-05
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    相关资源
    最近更新 更多