我之前从未使用批量编程,我的经验是Java和C#,但我想尝试学习。我正在尝试创建一个脚本,以便在运行它时,我放入一个目录路径,然后程序将遍历所述文件夹中的每个文件,告诉我它的名称并询问我是否要删除它。这就是我到目前为止所做的:
@ECHO off
set /p folder="Folder Address: "
FOR /R %folder% %%G IN (.) DO (
set filepath=%%~dpa
set /p delete="Delete?: "
IF %delete%="Y" IF %delete%="y"(
del %filepath%
)
pause
)
因此,当我启动脚本时,它会询问文件夹地址。我输入C:\ Users \ Tim \ Downloads并按Enter键。然后,命令提示符关闭,没有任何反应。我一直在研究FOR循环语法和诸如此类的东西,但我仍然无法找到我做错的东西。任何帮助将不胜感激,谢谢!
编辑:我很确定操作系统之间的语法有所不同。所以,如果它很重要,我有Windows 7。
编辑:我已将代码更新为npocmaka建议:
@ECHO off
set /p folder="Folder Address: "
FOR /R %folder% %%G IN (.) DO (
set filepath=%%~dpa
set /p delete="Delete?: "
IF /I !delete!="Y"(
del !filepath!
)
pause
)
然而,它仍会产生相同的结果。
答案 0 :(得分:1)
您需要delayed expansion和正确的OR逻辑(您正在使用的逻辑是AND - 使用/I
中的IF
开关):
@ECHO off
set /p folder="Folder Address: "
setlocal enableDelayedExpansion
FOR /R "%folder%" %%G IN (*) DO (
set "filepath=%%~fG"
set /p delete="Delete !filepath!?: "
IF /I "!delete!" equ "Y" (
del /Q "!filepath!"
)
rem pause
)