2015-06-22 57 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