2015-06-22 82 views
0

我想要在命令行中將證書的別名保存在變量中。 以獲取有關我的證書信息使用:對於/ f在命令行

keytool -list -keystore mykeystore -storepass xyz 

的結果是這樣的:

Keystore type: JKS 

Keystore provider: SUN 

Your keystore contains 1 entry 

certreq-ip[...]ac37, 22.06.2015m PrivateKeyEntrym 

Certificate fingerprint (SHA1): AE:5A:....** 

我的命令看起來像:

for /F "tokens=1,2 delims= " %A IN ('keytool -list -keystore mykeystore.jks -storepass myKeystorePassword') do set alias=%B 

我想要得到的是字符串部分從「certreq」直到逗號。

任何人都可以幫助我嗎?我認爲空間是錯誤的分隔符,因爲我想獲得第一個項目,當然之前沒有空間。但是,這是不可能的TU使用類似"token=0,1"...

+0

在那裏應該有一個'FIND'過濾器,所以你只能處理'PrivateKeyEntry'行? – Stavr00

回答

2

如果你想要的是certreq-ip[...]ac37,則:

for /f "delims=," %a in ('keytool -list -keystore mykeystore.jks -storepass myKeystorePassword^|findstr PrivateKeyEntry') do set alias=%a 

似乎工作。您正在按照Stavr00建議的PrivateKeyEntry進行篩選,並使用逗號作爲分隔符。記住,如果你把它放在一個批處理文件中,%a將需要變成%%a

+0

Yess,這是工作。我已經嘗試了findstr選項,但我不知道設置^連接是(我認爲這不需要在bat文件中)。 %a和%% a很清楚。 幹得好! – Tobi123

+0

這是連接這兩個命令的「''」(稱爲「管道」);在命令行和批處理文件中都需要使用「'^'」來保護「管道符號(否則,命令處理器會在處理'for'時嘗試並解釋它,命令作爲一個整體)。使用'^',管道不會被解釋,直到通過'for'命令調用該命令爲止。 – TripeHound