windows - 如何确定批处理文件是通过双击还是通过命令行打开的

标签 windows batch-file cmd

Windows 7 上,我有一个可执行文件,比如说 immutableProg.exe,我想用某些参数调用它 3 次。这是由批处理文件 myBatch.bat 完成的。

myBatch.bat 的内容:

immutableProg.exe -a
immutableProg.exe -b
immutableProg.exe -c

可执行文件 immutableProg.exe 确实有一个特殊的 --keep 开关,它会阻止可执行文件返回,直到用户按下任意键。现在我想添加 --keep 开关,当且仅当我的批处理 myBatch.bat 被双击时,如下所示:

immutableProg.exe -a
immutableProg.exe -b
immutableProg.exe -c --keep

如果用户从命令行调用批处理,则不应添加。

问题:如何确定(从我的批处理 View 中)它是通过双击还是从命令行打开的?

不幸的是,更改 immutableProg.exe 的默认行为不是一个选项,也不是从命令行为批处理文件提供额外参数。

最佳答案

%cmdcmdline% 给出了用于启动当前 Cmd.exe 的确切命令行。

从命令控制台启动时,此变量为 "%SystemRoot%\system32\cmd.exe"

从资源管理器启动时(双击)此 var 是 cmd/c ""{full_path_to_the_bat_file}"

关于windows - 如何确定批处理文件是通过双击还是通过命令行打开的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23248201/

相关文章:

msbuild - 如何通过 Jenkins 中的批处理命令仅触发 web.config 转换

c++ - 在 C++ 中运行 CMD 行使用变量(不是字符串文字)作为参数

windows cmd - 解析文件,输出字符范围,查找唯一值

windows - 将 ATA 命令直接发送到 Windows 中的设备?

C++ Win32api,创建一个没有资源的对话框

windows - 在c/c++中使用检查函数编译Windows NT命令行代码循环

file - 通过批处理文件启动多个文件

c++ - 在 Windows 上运行在 Linux 上交叉编译的 exe

java - 使用适用于 Java 的 MQ 类运行简单 jar 时出错

windows - 使用批处理变量重命名文件