2012-02-13 42 views
3

我有一個關於DOS啓動命令的問題。 我已經看過這個話題: 使用DOS「開始」與傳遞給所啓動的程序 Using the "start" command with parameters passed to the started program當傳遞參數有引號時使用DOS啓動命令

參數的命令,但我的問題是有點不同。

我有這個問題:我需要傳遞需要引用的路徑。

例如,如果路徑中沒有報價這工作得很好:

開始「」 APP.EXE - 選項C:\ MYAPP \ myfile.txt的

但如果路徑有雙引號它不作品。

我有這條線在我的批處理文件:

開始「→」程序myapp.exe -option%mypath中%

當%mypath中包含%雙引號(即在名稱中使用空格或其他字符路徑)啓動命令返回非常奇怪的結果。

感謝 桑德羅

+3

你也許應該看看http://stackoverflow.com/questions/562038/escaping-double-quotes-in-batch-script – 2012-02-13 20:12:00

回答

1

這可能會有所幫助,但它是一個位的路周圍方法和輕微的修改可能需要以滿足您的需要。

的想法是:

  1. 自卸其中有報價與預定義的名稱的文本文件中的環境變量。如:「set mypath2> withQt.bat」
  2. 使用窗口power shell或某些第三方工具來查找並替換該文件中的引號。
  3. 創建包含字符串「Set」的另一個文本文件
  4. 使用copy命令將步驟2中提到的文件與步驟3中創建的文件相加,並創建一個具有預定義名稱的批處理文件。像:copy base.bat + withQt.bat withtqt.bat
  5. 運行批處理文件,該文件創建另一個/用不帶引號的值替換環境變量。

對不起,我目前無法得到更優雅的東西。

2

通常,在引號中使用參數並不是問題,但如果您的應用程序路徑也有引號,則會出現問題。

然後您需要添加額外的CALL聲明。

start "" app.exe -option c:\myapp\myfile.txt - Works 
start "" app.exe -option "c:\myapp\myfile.txt" - Works 
start "" "app.exe" -option c:\myapp\myfile.txt - Works 

start "" "app.exe" -option "c:\myapp\myfile.txt" - Don't works 
start "" CALL "app.exe" -option "c:\myapp\myfile.txt" - Works 
+0

啊真好,你正在運行的「呼叫」命令,然後傳遞程序和參數。 Google員工注意:-option不是通用答案的一部分,它只是在那裏,因爲它在提問者的問題中。 – Andrew 2017-08-05 02:15:31

+0

**還要注意,您可以事先調用cd「path」。** start命令有一個/ d選項來設置它調用的命令/進程啓動的工作目錄。 – Andrew 2017-08-05 02:16:22