平等变量 - 批
问题描述:
所以,我下面的批处理脚本:平等变量 - 批
@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问题中。但是每次我运行这个脚本,它都会到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
......
答
保存下面的代码片段,可能命名为blabla.bat
:
@Echo OFF
setlocal
set complete_name=%1
if "%complete_name:9000=%"=="%complete_name%" (
if "%complete_name:930=%"=="%complete_name%" (
if "%complete_name:310=%"=="%complete_name%" (
echo problem
) else (
echo valid 310
)
) else (
echo valid 930
)
) else (
echo valid 9000
)
Exit /B
和从
观看输出blabla x9000y
blabla x930y
blabla x310y
blabla x9a0b0c0y
这是使用“编辑/替换”为1的方式嵌套IF ... (...) ELSE (...)
和2变量
或者,如果认为有必要GOTO
S,存在与For
环路类似的东西(一个很好的思想主题以及..) 。
@Echo OFF
setlocal EnableDelayedExpansion
set complete_name=%1
for %%G in (9000 930 310) DO (
if /I "!complete_name:%%G=!" neq "%complete_name%" GOTO :%%G
)
echo problem %complete_name%
GOTO :commonEnd
:9000
Echo valid 9000 %complete_name%
GOTO :commonEnd
:930
Echo valid 930 %complete_name%
GOTO :commonEnd
:310
Echo valid 310 %complete_name%
GOTO :commonEnd
:commonEnd
而不是使用'GOTO',尝试嵌套'IF ...(...)ELSE(...)'方法。并学习[变量编辑/替换](http://ss64.com/nt/syntax-replace.html) – JosefZ 2014-11-24 12:27:08
事实上这适用于我。排除你的子程序不以'exit/b'结尾的事实或者“goto:eof”。 – npocmaka 2014-11-24 12:32:30
@JosefZ我的目标不是“编辑/替换”一个变量。我不明白我怎么可以用'IF ...(...)ELSE(...)'而不是'GOTO'。 @npocmaka这只是我试图使用的脚本的一部分。所以我使用“暂停”来测试它是否有效。 – Prixeler 2014-11-24 15:06:28