批量编程,关于FOR循环语法的困惑?

时间:2015-09-14 19:11:02

标签: batch-file for-loop

我之前从未使用批量编程,我的经验是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
)

然而,它仍会产生相同的结果。

1 个答案:

答案 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
)