Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 只允许为变量批处理某些字_Batch File - Fatal编程技术网

Batch file 只允许为变量批处理某些字

Batch file 只允许为变量批处理某些字,batch-file,Batch File,晚上,我试图列出几个可以在批处理脚本中设置为变量的单词 例如: set allowedvar=James set secondallowedwar=Jane if not %allowedvar% == James or John or Smith ( echo Not correct variable set for allowedvar ) if not %secondallowedwar% == Jane or Jennifer or Allice ( echo Not correct

晚上,我试图列出几个可以在批处理脚本中设置为变量的单词

例如:

set allowedvar=James
set secondallowedwar=Jane

if not %allowedvar% == James or John or Smith ( echo Not correct variable set for allowedvar )
if not %secondallowedwar% == Jane or Jennifer or Allice ( echo Not correct variable set for secondallowedwar )
因此在这种情况下,
allowedvar
只能设置为
James
John
Smith
secondallowedwar
只能设置为
Jane
Jennifer
Allice

如何在批处理脚本中实现这一点


提前感谢:)

很难说最好的方法,因为这取决于脚本的其余部分以及它的工作方式,但类似的方法应该可以工作:

IF %allowedvar%==James GOTO correctvar
IF %allowedvar%==John GOTO correctvar
IF %allowedvar%==Smith GOTO correctvar
::The following line will only run if none of the above IF statements succeeded
echo Incorrect variable value && pause && goto start

:correctvar
echo Hello %allowedvar%! Nice to see you!

很难说最好的方法是什么,因为这取决于脚本的其余部分以及它的工作方式,但类似的方法应该可以工作:

IF %allowedvar%==James GOTO correctvar
IF %allowedvar%==John GOTO correctvar
IF %allowedvar%==Smith GOTO correctvar
::The following line will only run if none of the above IF statements succeeded
echo Incorrect variable value && pause && goto start

:correctvar
echo Hello %allowedvar%! Nice to see you!

这样做很容易做到:

rem allowed values, separated with spaces:
set allowed=James John Smith
for %%i in (%allowed%) do if "%1"=="%%i" goto ok
echo Invalid value: %1    
goto :eof

:ok
echo You picked: %1

此脚本使用第一个命令行参数(
%1
)作为要测试的变量,但您可以在其位置使用任何您想要的内容。

这样做很容易:

rem allowed values, separated with spaces:
set allowed=James John Smith
for %%i in (%allowed%) do if "%1"=="%%i" goto ok
echo Invalid value: %1    
goto :eof

:ok
echo You picked: %1
@echo off
setlocal EnableDelayedExpansion
set allowedValues=/James/John/Smith/
set /P allowedVar=Enter the name: 
if "!allowedValues:/%allowedVar%/=!" neq "%allowedValues%" (
   echo The name is valid
) else (
   echo Name NOT valid
)
此脚本使用第一个命令行参数(
%1
)作为要测试的变量,但您可以使用任何您想要的替代变量

@echo off
setlocal EnableDelayedExpansion
set allowedValues=/James/John/Smith/
set /P allowedVar=Enter the name: 
if "!allowedValues:/%allowedVar%/=!" neq "%allowedValues%" (
   echo The name is valid
) else (
   echo Name NOT valid
)
编辑:添加区分大小写的版本

上面的解决方案不区分大小写。对于区分大小写的,请使用以下命令:

@echo off
setlocal EnableDelayedExpansion
set allowedValues=/James/John/Smith/
set /P allowedVar=Enter the name: 
if "!allowedValues:/%allowedVar%/=!" neq "%allowedValues%" (
   echo Name matchs case insensitive
   if "!allowedValues:/%allowedVar%/=/%allowedVar%/!" equ "%allowedValues%" (
      echo Name matchs case sensitive
   )
) else (
   echo Name NOT matchs
)
编辑:添加区分大小写的版本

上面的解决方案不区分大小写。对于区分大小写的,请使用以下命令:

@echo off
setlocal EnableDelayedExpansion
set allowedValues=/James/John/Smith/
set /P allowedVar=Enter the name: 
if "!allowedValues:/%allowedVar%/=!" neq "%allowedValues%" (
   echo Name matchs case insensitive
   if "!allowedValues:/%allowedVar%/=/%allowedVar%/!" equ "%allowedValues%" (
      echo Name matchs case sensitive
   )
) else (
   echo Name NOT matchs
)

它区分大小写吗?如果没有,我能做到吗?@JohnWaynejr:看看上面的新版本。太好了!这对我帮助很大。谢谢你的解决方案!它区分大小写吗?如果没有,我能做到吗?@JohnWaynejr:看看上面的新版本。太好了!这对我帮助很大。谢谢你的解决方案!