【发布时间】:2021-03-07 07:46:12
【问题描述】:
我有一个批处理文件,它通过目录树搜索删除生成的文件备份。
我想编辑脚本以针对在搜索中找到的文件运行 del 命令,但我无法让它工作。
我搜索了其他线程并进行了类似的设置,但没有得到预期的结果。
@echo off
pushd FILEPATH
echo Searching directories...
for /f "delims=" %%G in ('dir /b /s *.0**.rfa') do echo "%%G"
echo.
IF /I "%%G" == "" GOTO NOTFOUND
set /P delete="Delete files? [Y/N]: "
IF /I "%delete%" NEQ "Y" GOTO ENDOF
echo Deleting files...
echo.
del "%%G"
echo.
echo Done!
timeout 5
exit
:ENDOF
echo Aborted.
timeout 5
exit
:NOTFOUND
echo Found nothing.
timeout 5
exit
结果:
Deleting files... Could Not Find FILEPATH\ %G Done!
【问题讨论】:
-
FOR变量是FOR命令本身的本地变量。一旦您在FOR命令执行之外,您就不能再使用该变量。如果您需要使用FOR命令执行多个命令,请在它们周围使用左括号和右括号。for /f "delims=" %%G in ('dir /b /s *.0**.rfa') do ( ...all your commands....)命令可以多行。关键是使用括号。 -
通配符
*表示“任意数量的字符”。**没有意义(“任意数量的字符后跟任意数量的字符”==“任意数量的字符”) -
@Squashman 你能不能不为整个脚本建立一个变量而不是将所有内容都添加到循环中?
-
@Stephan 是的,我也意识到了这一点......谢谢
-
“你不能为整个脚本建立一个变量吗” - 让我用一个非常小心yes来回答这个问题
标签: batch-file directory del