Variables 具有相同变量的多个批处理文件
我想知道在两个不同的批处理程序中是否可能有相同的变量Variables 具有相同变量的多个批处理文件,variables,batch-file,cmd,call,Variables,Batch File,Cmd,Call,我想知道在两个不同的批处理程序中是否可能有相同的变量 :home Set /p Name=What is your Name? Set /p Com=What Command do you wish to use? If %Com% == #HELP goto msgbox (MORE IF's ARE USED) goto msgbox :msgbox cls start msgbox.cmd Echo We
:home
Set /p Name=What is your Name?
Set /p Com=What Command do you wish to use?
If %Com% == #HELP goto msgbox
(MORE IF's ARE USED)
goto msgbox
:msgbox
cls
start msgbox.cmd
Echo Welcome to the MSGBOX PROGRAM %Name%
%Com% Code was typed, here is the Help file
goto Help
:Help
cls
(display's the help for program)
Set /p return=Would you like to return?
If %return%==Y goto home
If %return%==N goto exit
(Set errorlevel==1 if no selection)
:exit
cls
Echo press Enter to exit program
pause >nul
对
1)如果从第一个bat文件调用第二个bat文件,则第二个bat文件将继承所有变量
2)您还可以定义环境变量。您可以使用
虽然它写在注册表中,但您不能直接使用它-它将在下一个cmd会话中可访问。因此,您需要在脚本中使用临时变量:
Set /p Com=What Command do you wish to use?
rem making variable accessible for the next run or for another batch
setx Com %com%
你可以覆盖它的值为每一个cmd会话或脚本你想要设置。之后,它将再次使用注册表值
3)您也可以使用临时文件,但这需要在下一批中读取:
Set /p Com=What Command do you wish to use?
echo %com%>c:\command.file
在下一个脚本中,您需要使用:
for /f "useback tokens=* delims=" %%# in ("c:\command.file") do set "com=%%#"
您希望在两个脚本中使用哪个变量?它将是%Com%变量。注意它是如何作为第二个set/p命令出现在主程序中的。然后它转到msgbox.cmd窗口,在该窗口中存储变量%Com%,并从主程序中使用。注意:请记住
CALL
将保持相同的cmd窗口并允许使用变量<代码>开始将打开一个新的CMD窗口(如果没有/B标志)和新的变量上下文。好的,谢谢!我正在看答复中的第3条。您可以覆盖其值的原因是什么?可能用作变量的“重置”?谢谢每个命令提示符会话都会创建自己的变量上下文。它还会读取注册表中写入的环境变量,但使用set
命令定义的所有变量仅对此会话有效。因此,您可以使用set覆盖环境变量值,但它只对当前会话有效。谢谢您的回复。我理解。祝你有美好的一天
for /f "useback tokens=* delims=" %%# in ("c:\command.file") do set "com=%%#"