【发布时间】:2015-01-22 03:36:26
【问题描述】:
所以,我有以下批处理脚本:
@echo off
set /p name=
rem a random number, don't care about it.
set complete_name=%name%.Creepy
Goto STEP1
:STEP1
echo %complete_name%|findstr /C:"9000" >nul 2>&1
if not errorlevel 1 (
goto 9000
) else (
GOTO CHECK2
)
:CHECK2
echo %complete_name%|findstr /C:"930" >nul 2>&1
if not errorlevel 1 (
goto 930
) else (
GOTO CHECK3
)
:CHECK3
echo %complete_name%|findstr /C:"310" >nul 2>&1
if not errorlevel 1 (
goto 310
) else (
ECHO PROBLEM
)
:9000
ECHO 9000
PAUSE
:930
ECHO 930
PAUSE
:310
ECHO 310
PAUSE
我希望它检查“9000”是否在变量中,对于“930”和“310”也是如此。如果这些数字都不在可变回声问题中。但是每次我运行这个脚本时,它都会转到ECHO PROBLEM,即使 9000/920/310 在%complete_name% 中。那么,这是检查一个变量是否在另一个变量中的正确方法还是有更简单的方法呢?
所以我试过这段代码:
@echo off
set name=310
set complete_name=%name%.Creepy
Goto STEP1
:STEP1
setlocal
if "%complete_name:9000=%"=="%complete_name%" (
if "%complete_name:930=%"=="%complete_name%" (
if "%complete_name:310=%"=="%complete_name%" (
echo PROBLEM
) else (
goto 9000
)
) else (
goto 930
)
) else (
goto 310
)
goto :eof
但我被困在echo problem...
【问题讨论】:
-
不要使用
GOTOs,而是尝试嵌套IF ... ( ... ) ELSE ( ... )方法。并学习Variable Edit/Replace -
事实上这对我有用。不包括你的子程序不是以
exit /b或goto :eof结尾的事实。 -
@JosefZ 我的目标不是“编辑/替换”变量。而且我不明白如何使用
IF ... ( ... ) ELSE ( ... )而不是GOTO。 @npocmaka 这只是我尝试使用的脚本的一部分。所以我用“PAUSE”来测试它是否有效。
标签: windows variables batch-file cmd findstr