Powershell或Batch可使用用户输入参数执行命令,并将其保存在文本文件中以备将来使用默认值
我有一个程序,我想用这样的行执行:Powershell或Batch可使用用户输入参数执行命令,并将其保存在文本文件中以备将来使用默认值,powershell,batch-file,Powershell,Batch File,我有一个程序,我想用这样的行执行: gams.exe program.gms user-defined-variable1 user-defined-variable2 .......... 目前,我使用一个批处理文件,提示用户输入用户定义变量的输入字符串,例如: 代码: set /P scen_num="(What scenario number would you like to simulate?) " 输出: (您希望模拟什么场景编号?) 用户类型:1 我经常使用这个批处理文
gams.exe program.gms user-defined-variable1 user-defined-variable2 ..........
目前,我使用一个批处理文件,提示用户输入用户定义变量的输入字符串,例如:
- 代码:
set /P scen_num="(What scenario number would you like to simulate?) "
- 输出: (您希望模拟什么场景编号?)
- 用户类型:
1
另一个解决方案是进行配置批处理,以保存变量并调用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
:[ 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%
)
如果您选择将设置保存到批处理中,则将%name%设置为您想要的任何值,然后只需替换即可
call config.bat
:[ with ]
call %name%.bat
您确实提到了只需轻触enter键即可设置要设置默认值的变量,这可以通过以下方式完成:
Program2.bat
echo set var1=%var1% > %name%.bat
echo set var2=%var2% >> %name%.bat
echo set var3=%var3% >> %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%
)
我们可以将其作为(1)或(2)的副本关闭吗?您可能也感兴趣。什么是
set 1=var1
,这个答案如何比我评论中列出的可能的副本更好?除非您的答案比现有答案更好,否则对于未搜索现有解决方案的用户的问题,无需提供重复答案。谢谢。这对我很有用。我确实搜索了现有的解决方案,但没有搜索到它们的组成部分。例如,如果用户未定义值,我没有想到将配置文件中的现有变量回显给用户,并将其与默认值组合。使用Set 1=%var1
抵消Set/p var1
,使变量不会标记为空,也不会同时设置所有变量。我不确定他想要设置的条件,所以我的回答的目的是提供一种简单快速的方法,在没有定义的情况下将变量设置为默认值。我修正并在变量周围添加了%
。