【问题标题】:How to find out if a batch file was opened by double click, or by command line如何确定批处理文件是通过双击还是通过命令行打开的
【发布时间】:2014-04-23 15:01:58
【问题描述】:

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

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

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

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

【问题讨论】:

标签: windows batch-file cmd


【解决方案1】:

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

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

当从资源管理器(双击)启动时,这个变量是cmd /c ""{full_path_to_the_bat_file}"

【讨论】:

    【解决方案2】:

    要实际使用 haxtbh 答案中的信息,您可以执行以下操作。它不是万无一失的,但它通常可以正常工作。它需要一个不寻常的场景才能给出错误的读数。

    echo %cmdcmdline%|find /i """%~f0""">nul && echo doubleClick || echo console launch
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多