gpt4 book ai didi

windows - 通过双击或从 cmd 窗口检测 bat 文件是否正在运行

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

我有一个 bat 文件,它可以做很多事情并关闭 cmd 窗口,当用户从资源管理器中双击 bat 文件时,这很好。但是如果我从一个已经打开的 cmd 窗口运行 bat 文件,如 cmd>c:\myfile.bat 那么我不希望 bat 文件关闭 cmd 窗口(结束),因为我需要做其他事情。我需要 bat dos 命令代码来做类似的事情

if (initiated_from_explorer) then
else
endif

这可能吗?谢谢

最佳答案

mousio's solution很好,但由于 %cmdcmdline% 值中的双引号(%cmdcmdline%< 周围有或没有双引号,我没能在“IF”语句中使用)。

相比之下,使用 %0 的解决方案工作正常。我使用了以下 block 语句,它非常有效:

IF %0 == "%~0"  pause

以下解决方案将 %~0 扩展为完全限定的路径,如果前一个不起作用(参见 Alex Essilfie's comment ),它也可能有效:

IF %0 EQU "%~dpnx0" PAUSE

但是,请注意,当

  1. .bat 文件位于 %USERPROFILE% 目录中的某处,并且
  2. 您的 %USERNAME% 包含一个或多个大写字符

因为...等等... %~dpnx0 中的 d 强制您的 %USERPROFILE% 用户名小写,而普通 %0 没有。因此,如果您的用户名包含大写字符,它们永远不会相等。 ¯\_(ツ)_/¯

[2021 年 6 月 18 日编辑——感谢 JasonXA]

您可以通过不区分大小写的比较(神奇的 /I)解决这个小写问题:

IF /I %0 EQU "%~dpnx0" PAUSE

这可能是最好的解决方案!

关于windows - 通过双击或从 cmd 窗口检测 bat 文件是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859854/

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