如果存在则比较文件名,然后使用批处理文件删除

时间:2015-01-05 09:31:59

标签: batch-file compare filenames

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

我知道它可能在PHP中但我想用批处理文件

完成它

三江源

1 个答案:

答案 0 :(得分:2)

@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参数中,而请求的第二个令牌是文件名的其余部分,并存储在{{{ 1}}(按字母顺序排列的下一个)可替换参数。

删除操作仅回显给控制台。如果输出正确,请在%%b

之前删除echo命令