我有一个我想用这样的行执行的程序:
gams.exe program.gms user-defined-variable1 user-defined-variable2 ..........
目前我使用批处理文件提示用户输入用户定义变量的输入字符串,例如:
代码:
set /P scen_num="(What scenario number would you like to simulate?) "
输出:
(您希望模拟哪种情景编号?)
1
我经常使用这个批处理文件,并且有多个参数。我想将最新的参数写入文本文件,以便下次运行批处理(或Powershell)文件时,以前使用的设置将出现在提示符处:
(您希望模拟哪种情景编号?)1
因此,如果我想执行与上一次完全相同的操作,我可以发送垃圾信息。
理想情况下,我希望能够批量执行此操作,但如果批处理无法执行此操作,则可以接受Powershell。
答案 0 :(得分:2)
另一种解决方案是制作配置批处理,以保存变量并调用set。在设置所有变量后,您可以添加类似的内容。
Program.bat
:[ First variable acts to wipe file with single `>` ]
echo set var1=%var1% > config.bat
echo set var2=%var2% >> config.bat
echo set var3=%var3% >> config.bat
:[ etc ]
这将创建一个类似的批处理:
config.bat
:[ setting variables to random data for examples sake.
set var1=Hello
set var2=I am
set var3=text.
您可以添加选项以手动设置变量,或只是
call config.bat
如果您希望有多个默认设置,您可以将这些设置为单独的批处理脚本,方法是将Program.bat调整为:
Program2.bat
echo set var1=%var1% > %name%.bat
echo set var2=%var2% >> %name%.bat
echo set var3=%var3% >> %name%.bat
如果您选择将设置保存到批处理中,则将%name%设置为您想要的任何内容,然后只需替换
call config.bat
:[ with ]
call %name%.bat
你确实提到了只需点击输入你想要设置默认值的变量的功能,可以通过以下方式完成:
:[ Have the variables saved in config.bat set to retrievable variables ]
call config.bat
set 1=%var1%
set 2=%var2%
set 3=%var3%
:[ Set the variables, if `enter` pressed set to retrievable variable ]
echo Enter var1
set /p var1=
if not defined var1 (
set var1=%1%
)
echo Enter var2
set /p var2=
if not defined var2 (
set var2=%2%
)
echo Enter var3
set /p var3=
if not defined var3 (
set var3=%3%
)