2017-07-31 71 views
1

我的問題涉及上一個問題, How to run a batch script in a separate instance of cmd.exe。但它不起作用,所以我想完全解釋我的問題。如何將參數傳遞給兒童CMD

  1. 我的平臺是Windows 7,但我認爲它在Windows XP中與10相同。

  2. 我在.cmd腳本中通過setx.exe設置了一個環境變量。 (works)

  3. 我想執行「my.jar」與java -jar my.jar,它需要環境變量。從當前CMD運行它將不起作用,因爲該變量未定義。所以我嘗試了以下方法:

    1. 從第一個打開一個新的CMD start "" /i Java -jar my.jar。我嘗試了大概所有start選項! (失敗,沒有範圍)

    2. start %windir%/Explorer "%windir%\system32\cmd.exe"開始新的CMD並輸入java -jar my.jar。 (工程,範圍確定)

我想實現在一個批處理文件,工作溶液(3.2),但它失敗:

setx var "blabla" 
start %windir%/Explorer "%windir%\system32\cmd.exe" 
??? 

我如何傳遞參數java.exe -jar my.jar到第二個CMD?

+0

什麼是'start%windir%/ Explorer「%windir%\ system32 \ cmd.exe」'應該這樣做?你嘗試過''開始「」[/ I] cmd/K java -jar「my.jar」',所以'java'命令行出現在一個新的'cmd'實例中(用'/ C'替換'/ K'爲'cmd'窗口自動關閉)?無論如何,狀態'setx var「blabla」'**和**'設置「var = blabla」',所以'var'在新的和當前的'cmd'實例中被設置... – aschipfl

+0

java.exe可以在PATH中找到? Windows有類似於註冊的可執行文件(當PATH變量至少被定義時會被使用 - 足夠瘋狂)。我不知道,這些註冊的可執行文件是否繼承了調用者的環境 - 當多個資源管理器實例正在運行時... – V15I0N

+0

路徑設置正常。 start%windir%/ Explorer「%windir%\ system32 \ cmd.exe」除了用WM_SETTINGCHANGE調用啓動一個新的cmd外,什麼都不做。 這是我想要的,但也做我的罐子......電話,但我認爲它不工作。 手動是,但不是在腳本 – Dan

回答

1

setx對windows安裝進行全局更改,在重新啓動後(或者從右側的資源管理器實例啓動進程時),該安裝很可能存在。

set var="blabla" 

可能是你想要的。

+0

或者,如果您需要兩者,請將'set'與setx.exe結合使用。 – eryksun

+0

setx.exe默認修改用戶的配置文件目錄中存儲的'HKCU \ Environment'中的用戶永久環境變量,所以默認不會修改Windows安裝。它廣播一個WM_SETTINGCHANGE消息來通知頂級窗口環境在磁盤上發生了變化。資源管理器在收到此消息時立即重新加載其環境,因此從資源管理器運行CMD會繼承更新後的環境。 – eryksun

+0

thnaks eryksun,這是exaktly我發現的行爲,所以我從資源管理器中啓動與CMD的應用程序。但我沒有通過論證。 SET不起作用。我可以用「SET」看到Var,但應用程序沒有認出它。也不在孩子。只有SETX正在工作。 – Dan