比较文件名如果存在然后使用批处理文件删除
Compare file name if exists then delete using batch file
我在一个文件夹中有很多名为 TOP_QUERIES-filename.com.csv
、TOP_QUERIES-www.filename.com.csv
的 .csv 文件是否可以比较除 TOP_QUERIES-www.
之外的所有文件名以查找 [=11] =] 存在然后删除它,否则保留它们。
我知道它在 php 中是可行的,但我想使用批处理文件来完成它
谢谢
@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
命令
我在一个文件夹中有很多名为 TOP_QUERIES-filename.com.csv
、TOP_QUERIES-www.filename.com.csv
的 .csv 文件是否可以比较除 TOP_QUERIES-www.
之外的所有文件名以查找 [=11] =] 存在然后删除它,否则保留它们。
我知道它在 php 中是可行的,但我想使用批处理文件来完成它
谢谢
@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
命令