roo*_*oot 11 windows batch cmd.exe
我编写了一个批处理文件,打算分发到几十台机器上。它会自动检查多个设备的工作状态。我最近在脚本的开头添加了一个“菜单”,提示用户从列表中选择要查询的特定项目。但是,列表太长,不滚动就无法看到。
除了优化我的列表,我可以向批处理中添加什么以最大化启动 Windows shell?我试图欺骗和Right click the .bat -> Properties -> Change the "Run" state to "Maximized",但这个选项不存在(坦率地说,我宁愿在脚本本身中添加这个功能)。
运行脚本的机器正在运行 Windows 7
use*_*728 17
您可以尝试start /MAX yourscript.bat在最大化的 cmd(最高 Windows 7)中启动您的脚本
编辑(由里克):
我创建了一个小示例,它展示了如何在一个批处理文件中完成所有操作
(没有单独的启动器):
@echo off
if not "%1" == "max" start /MAX cmd /c %0 max & exit/b
:: here comes the rest of your batch-file
echo "test"
pause
Run Code Online (Sandbox Code Playgroud)
在开始最大化版本之前,原始批处理文件(将立即退出)会有轻微的闪烁。
简单解释:
如果没有使用max我们再次调用自己的参数( %0)调用批处理,这一次在 的帮助下最大化start /max,并且使用该参数max,这样第二次调用它将跳过 if 语句并继续您的命令。
分解:
if not "%1" == "max"仅当%1不是“max”时才执行下一个命令。%1代表给批处理文件的第一个参数。因此,my_batch.bat max将有max在%1-variable。如果我们没有用max参数启动批处理,我们需要执行这一行。start /MAX 在它之后以最大化的形式启动命令。cmd /c执行cmd.exe并/c表示之后退出。%0 max. 该%0代表自己的批处理文件名称,这里max是它的第一个参数。这意味着我们需要跳过第一行if,否则我们会陷入循环:)& exit/b:&表示与前一个命令同时执行下一个命令。这意味着我们执行start /max your batchfile并同时退出当前批处理。这也意味着,我们不能说这个版本与其他任何参数比max。如果你的批处理文件需要一个参数来启动,那么你需要做一些更多的魔术(比如shift在测试后 %1 )。
如果是这种情况,请告诉我们。