題 如何在新窗口中執行時如何“暫停”?


我編寫了一個假定的批處理腳本 %1 是文件的路徑。有時我想在Windows資源管理器中通過拖放操作使用這個批處理腳本(將我的目標文件拖到我的批處理腳本文件中),有時我想從現有的命令提示符窗口運行這個批處理腳本並提供我的 %1 路徑顯式(通常只是一個相對路徑)。

我不希望我的腳本在“拖放”時立即消失,因此我需要 pause。但是,我不想要按 any key to continue 每次使用現有的命令提示符窗口時,我都不想要 pause

有沒有辦法讓兩全其美?我可以以某種方式檢測/推斷我所處的場景,並決定暫停或不暫停嗎?這裡最好的方法是什麼?


2
2018-01-04 01:51


起源




答案:


嘗試在批處理文件中使用它:

set arg0=%0
if [%arg0:~2,1%]==[:] pause

這將檢查第0個參數的第3個字符(基本上是批處理文件名本身)是否為冒號。

通常,當您在批處理文件上拖放某些內容時,它被稱為: "Drive:\path\to\Batch File.bat" Arg1 Arg2 ... 但是,當我們從命令提示符執行批處理文件時,我們通常不會使用帶引號的絕對路徑來調用它。因此,我們可以利用這種差異並執行一個 pause 僅當冒號作為第3個字符存在時,暗示批處理文件是通過拖放執行的。當然,如果您使用帶引號的絕對路徑從命令提示符執行批處理文件,它自然會 pause 同樣。


4
2018-01-04 03:34



正是我需要的。 - DuckMaestro


扔一個 cmd /k 在腳本的最後。在現有窗口中,它將返回到命令提示符,並在新窗口中執行相同操作,保持窗口打開。

@echo off
echo "some text"
cmd /k

注意/ k是停止打印:

Microsoft Windows [版本6.1.7601]   版權所有(c)2009 Microsoft Corporation。版權所有。


3
2018-01-04 01:58



+1。這是有幫助的,雖然這有副作用現在打開一個命令提示符,當我真的想保持行為 pause 因為我可以簡單地按空格鍵(或任何鍵)來關閉新窗口。 - DuckMaestro
Alt + F4怎麼樣? :P我不認為有可能無論如何都無法區分這兩種情況。雖然很高興有人證明我錯了,但是會很有用。 - Taz
哈哈,我其實只是試圖用Alt + F4關閉命令提示符,發現它不起作用。 -.- - Taz