gpt4 book ai didi

windows - 双击时暂停批处理文件,但从控制台窗口运行时不暂停?

转载 作者:可可西里 更新时间:2023-11-01 12:12:44 24 4
gpt4 key购买 nike

批处理文件(在本例中,运行在 Windows XP 上)有没有办法确定它是从命令行启动(即在控制台窗口内)还是通过 shell 启动(例如通过双击) ?

我有一个脚本,我希望在通过 shell 运行时在某些点暂停,但在命令行运行时则不会。我看过a similar question在 SO 上,但由于两个原因无法使用相同的解决方案:首先,它是否暂停需要取决于多个因素,其中只有一个是它是否被双击。其次,我会将此脚本分发给我团队中的其他人,我不能现实地要求他们所有人都进行影响所有脚本的注册表更改。

这可能吗?

最佳答案

找到一个 :-) – 在拼命思考 cmd 在交互式运行时可能会做什么而不是在直接启动批处理文件时...我终于找到了一个。

伪变量 %cmdcmdline% 包含用于启动 cmd 的命令行。如果 cmd 正常启动,它包含类似于以下内容的内容:

"C:\Windows\System32\cmd.exe"

但是,启动批处理文件时,它看起来像这样:

cmd /c ""C:\Users\Me\test.cmd" "

小演示:

@echo off
for %%x in (%cmdcmdline%) do if /i "%%~x"=="/c" set DOUBLECLICKED=1
if defined DOUBLECLICKED pause

虽然这种检查方式可能不是最可靠的,但如果直接启动批处理文件,/c 应该只作为参数出现。

Works on my machine

在 Windows 7 x64 上测试。它可能会或可能不会工作、损坏、做一些奇怪的事情、吃 child (可能是一件好事)或咬你的 Nose 。

关于windows - 双击时暂停批处理文件,但从控制台窗口运行时不暂停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3551888/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com