【问题标题】:Compare file name if exists then delete using batch file比较文件名(如果存在)然后使用批处理文件删除
【发布时间】:2015-01-05 09:31:59
【问题描述】:

我在一个文件夹中有很多 .csv 文件,名称如 TOP_QUERIES-filename.com.csvTOP_QUERIES-www.filename.com.csv 是否可以比较除 TOP_QUERIES-www. 之外的所有文件名以查找 TOP_QUERIES-www.filename.com.csv 是否存在,然后将其删除,否则保留它们。

我知道它在 php 中是可能的,但我想使用批处理文件来完成它

谢谢

【问题讨论】:

  • 您要删除除www.以外的所有文件?还是要删除所有文件?
  • 不!我有一些文件是双名称的,例如TOP_QUERIES-filename.com.csvTOP_QUERIES-www.filename.com.csv。所以我想摆脱那些双重文件,我把那些有www的文件放在里面

标签: batch-file compare filenames


【解决方案1】:
@echo off
    setlocal enableextensions disabledelayedexpansion

    pushd "c:\target\folder" && (
        for /f "tokens=1,* delims=." %%a in ('
            dir /a-d /b "TOP_QUERIES-www.*.csv"
        ') do echo del /q "TOP_QUERIES-%%b" 2>nul
        popd
    )

这会将当前活动目录更改为包含文件的目录,并且对于每个以www 为前缀的目录,都会尝试删除相应的配对文件。如果不存在,则丢弃该错误。最后恢复当前活动目录

为了确定要删除的文件的名称,for /f 用于使用点作为分隔符来标记文件名。我们请求两个标记(tokens=1,*),第一个标记在第一个分隔符之前,存储在%%a replaceabe 参数中,而请求的第二个标记是文件名的其余部分,存储在%%b(下一个一个按字母顺序)可替换的参数。

删除操作仅回显到控制台。如果输出正确,去掉del之前的echo命令

【讨论】:

    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多