我在批处理文件中遇到 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 语句的问题 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用 php 我在 foreach 中遇到 if elseif else 语句有问题