Powershell或Batch用于执行具有用户输入参数的命令,并将其保存在文本文件中以供将来默认使用

时间:2015-10-27 16:10:41

标签: 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

我经常使用这个批处理文件,并且有多个参数。我想将最新的参数写入文本文件,以便下次运行批处理(或Powershell)文件时,以前使用的设置将出现在提示符处:

  

(您希望模拟哪种情景编号?)1

因此,如果我想执行与上一次完全相同的操作,我可以发送垃圾信息。

理想情况下,我希望能够批量执行此操作,但如果批处理无法执行此操作,则可以接受Powershell。

  1. 如何输出/读取文本文件?
  2. 在输入任何内容之前,如何使提示已包含指定的值?

1 个答案:

答案 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%
)