如何确定*.bat文件是在控制台中运行还是独立运行?

4

有没有一种方法可以检查这一点,以便在结尾处放置一个条件语句,不关闭控制台窗口或等待用户按键,但如果在另一个控制台中键入*.bat文件,则省略该操作,因为Windows在结尾处不会关闭?

1个回答

3
你可以使用 %CMDCMDLINE% 进行检查。
@echo off
CALL :GETMYSWITCH %CMDCMDLINE%
IF /I "%MYSWITCH%" == "/C" ECHO Used explorer & PAUSE
IF /I NOT "%MYSWITCH%" == "/C" ECHO used cmd

:GETMYSWITCH
SET MYSWITCH=%2

如果您的批处理文件是由您编写的脚本调用而不是直接双击调用,那么您可以让您的脚本向批处理文件传递一个参数,然后检查是否需要使用pause。我更新了我的答案,使用从这里得到的“函数”。

无论哪种情况,它对我都不起作用。这是cmd/c...就好像我双击它一样...也许是我已经将bat文件设置为在控制台中键入脚本文件时运行(通过assoc)...在这种情况下,它对运行方式视而不见。 - rsk82
@rsk82 你使用的是哪个操作系统? - Gray
@rsk82 很抱歉让你再试一次,但你能否尝试运行上面的代码以查看是否有效? - Gray
抱歉,我刚刚注意到你的编辑。如果一个脚本正在调用你的批处理文件,那么据我所知它无法知道这一点。让你的脚本传递一个命令行变量,并检查它。 - Gray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接