例如我可以直接撥打myscript.cmd
或在其他腳本中我可以將一行寫入myscript。是否有可能區分shell從命令行或從其他shell運行?
原因是,如果一個腳本自己運行,它會在它停止執行時消失,所以我看不到結果,所以最後我必須添加@pause
,但是當我從另一個shell運行它時這會導致煩惱,因爲控制檯窗口不會以這種方式退出。
所以我尋找某種'如果'的條件來解決這個問題。
例如我可以直接撥打myscript.cmd
或在其他腳本中我可以將一行寫入myscript。是否有可能區分shell從命令行或從其他shell運行?
原因是,如果一個腳本自己運行,它會在它停止執行時消失,所以我看不到結果,所以最後我必須添加@pause
,但是當我從另一個shell運行它時這會導致煩惱,因爲控制檯窗口不會以這種方式退出。
所以我尋找某種'如果'的條件來解決這個問題。
爲了讓您的腳本暫停時雙擊(或通過刪除裏面的文件),但終止通常的方式從控制檯調用時:
@echo off
echo Hello World!
:: ...your ScriptCode...
(((echo.%CMDCMDLINE%)|find /I "%~0")>NUL)&&pause
非常感謝。聰明的黑客。 – rsk82
爲什麼不自己設置它?
SET RUNNINGFROMOTHERSHELL=YES
CALL MYSCRIPT.CMD
SET RUNNINGFROMOTHERSHELL=
在MyScript.Cmd:
IF "%RUNNINGFROMOTHERSHELL%"=="" GOTO NOPAUSE
PAUSE
:NOPAUSE
從開始 - >運行窗口啓動cmd.exe時,手動設置變量是沒有意義的,它比暫停本身更糟糕。也許我應該尋找那些在這兩種情況下都不同的變量,但沒有完全針對此的目的。 – rsk82
你從開始 - >運行時不會做。這是完整的一點。順便說一下,沒有任何環境變量是不同的。嘗試一下。 – Stu
我想你是對的,但我真的不明白它是如何工作的,我在哪裏設置這個變量? MyScript是我運行的,我在資源管理器中單擊的,但我也可以運行cmd.exe,然後在那裏cd到文件夾並運行我的sript,但似乎我應該把它放在anoter文件中,從我稱之爲腳本的地方,什麼文件?然後我必須記住什麼時候打電話給我。 – rsk82
見http://stackoverflow.com/questions/5859854/detect-if-bat-file-is-running-via-double-click-or-from-cmd-window – sakra
哇,有趣。我從來不知道%cmdcmdline%,因爲它不顯示在env變量列表中。有你的解決方案,rsk82。 –