我在批处理文件中遇到 if 语句的问题 [重复]

Posted

技术标签:

【中文标题】我在批处理文件中遇到 if 语句的问题 [重复]【英文标题】:I am having issues with if-statements in Batch File [duplicate] 【发布时间】:2022-01-09 22:42:25 【问题描述】:

我正在批量编写一个脚本,用于从我的计算机上的所有目录中删除文件。我已经列出了基础知识,但是在处理批处理文件代码时遇到了一个尚未遇到的问题。我将把我的代码放在下面,但是发生的事情是,当我运行代码时,我无法通过第一个 if 语句,我在每一行之后插入了暂停,这样我就可以找出问题所在,这就是我知道的.当我运行代码时会发生什么,它运行正常,它打开一个终端窗口,并提示用户输入,但在我给输入后立即用 if 语句杀死它。我之前在批处理文件中做过很多 if 语句,但这是我第一次遇到这样的错误,非常感谢一些帮助。提前感谢所有帮助!

代码


echo ~~~~~~~~~~~~~~
echo Program Delete
echo ~~~~~~~~~~~~~~
set /p choice=Please enter 1 to continue or 0 to return to menu: 
if %choice%==1 (
    pause
    Set /P inp=Please enter a file name: 
    pause
    for /f %%F in (C:\Program Files)(
        if "%%F" == "%inp%" (
        goto:remo
    )
)

(我还没有完全完成代码,我只是确保我制作的部分能够正常运行。)

【问题讨论】:

这能回答你的问题吗? windows batch SET inside IF not working @Squashman 并不能完全回答我的问题,但我感谢您的帮助,如果我的问题需要重新措辞以便更容易理解,请告诉我。 :) @T3RR0R 这也不能完全回答我的问题,但我仍然感谢您的帮助。 【参考方案1】:

for 循环查找单个文件?另外,对于这些类型的菜单,不如使用choice 命令并使用errorlevel 这里我们测试文件是否存在于"C:\Program Files\" 而不是for 循环遍历它:

@echo off
echo ~~~~~~~~~~~~~~
echo Program Delete
echo ~~~~~~~~~~~~~~
choice /c 12 /m "1. Continue 2. Goto menu
goto :opt%errorlevel%

:opt1
:: Delete option is option 1 or %errorlevel% of 1
Set /P inp=Please enter a file name: 
if exist "C:\Program Files\%inp%" call :remo

:opt2
::Menu goes under option 2 or %errorlevel% of 2

【讨论】:

这解决了它,非常感谢您的帮助非常宝贵。 :)

以上是关于我在批处理文件中遇到 if 语句的问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

批处理文件中的变量和 if 语句存在问题[重复]

SSI IF 语句错误

javascript IF语句错误[重复]

使用 php 我在 foreach 中遇到 if elseif else 语句有问题

遇到问题如何使用 if 语句来确定某物是不是在列表中。 Python [重复]

使用 if 语句后跟调用似乎在批处理文件中不起作用