是否可以区分shell从命令行运行或从其他shell运行?

时间:2011-08-05 18:44:16

标签: windows cmd

例如我可以直接调用myscript.cmd或者在其他脚本中我可以为myscript添加一行。

原因是如果一个脚本在它自己运行时它会在它停止执行时消失,所以我看不到结果,所以最后我必须添加@pause但是当我运行它时从另一个shell中,这会引起烦恼,因为控制台窗口不会以这种方式退出。

所以我寻找某种'if'条件来解决这个问题。

3 个答案:

答案 0 :(得分:1)

除非你创建一个像Stu建议的环境变量,否则你不会找到任何你想要的东西。您将需要编写一个以编程方式查询父进程的小程序,并返回脚本可以检查的值。如果您从Start->运行,则运行您的父级将是explorer.exe。否则它将是cmd.exe或其他一些exe。

可以找到查找父进程的示例代码here

答案 1 :(得分:1)

要在双击(或删除文件)时暂停脚本,但在从控制台调用时终止常规方法:

@echo off

echo Hello World!

:: ...your ScriptCode...

(((echo.%CMDCMDLINE%)|find /I "%~0")>NUL)&&pause

答案 2 :(得分:0)

为什么不自己设置?

SET RUNNINGFROMOTHERSHELL=YES
CALL MYSCRIPT.CMD
SET RUNNINGFROMOTHERSHELL=

在MyScript.Cmd中:

IF "%RUNNINGFROMOTHERSHELL%"=="" GOTO NOPAUSE
PAUSE
:NOPAUSE