0

keytool を使用して自己署名証明書を作成するための cmd スクリプトを作成しています。エイリアスが keystore に既に存在するかどうかを確認したかったのですが、

したがって、以下のコマンドを実行して変数に格納する必要があります。変数がnullの場合、エイリアスが存在しないと想定できるように、

  keytool -list -v -storepass "%KEYSTORE_PASS%" -keystore cert/seurat-keystore.jks ^| find "Alias name: 1"

で試しました

   FOR /F "tokens=* delims=" %%A IN ('keytool -list -v -storepass "%KEYSTORE_PASS%" -keystore cert/seurat-keystore.jks ^| find "Alias name: 1"') DO SET Variable=%%A
    echo %Variable%

しかし、エコーオフが表示されます。以下のコードを使用してシェルスクリプトで達成したのと同じ、

   if [ -n  "$(keytool -list -v -storepass "${KEYSTORE_PASS}" -keystore cert/seurat-keystore.jks | grep 'Alias name: 1')" ] ; then
   fi

cmd script で同じことを達成するにはどうすればよいですか? どんな助けでも本当にかなりの価値があります!!!

4

2 に答える 2

0

すみません。「変数がnullの場合、エイリアスが存在しないと想定できます」と書きました。コマンドが ECHO OFF を示している場合echo %variable%、変数は null です。あなたのコードは正しいと思いますが、次のように少し変更します。

FOR /F "tokens=* delims=" %%A IN ('keytool -list -v -storepass "%KEYSTORE_PASS%" -keystore cert/seurat-keystore.jks ^| find "Alias name: 1"') DO SET Variable=%%A
if "%Variable%" == "" (
   echo The alias doesn't exists
) else (
   echo The alias is: %Variable%
)

別の方法は次のとおりです。

if not defined Variable (
   echo The alias doesn't exists
) else (
   echo The alias is: %Variable%
)
于 2012-07-05T01:03:32.543 に答える
0

私はこれを持っていkeytoolないので、それが何なのか、何をするのかわかりません。ECHOしかし、それをコマンドに置き換えたところ、うまくいきました:

FOR /F "tokens=* delims=" %%A IN ('ECHO Alias name: 1 ^| find "Alias name: 1"') DO SET Variable=%%A
echo %Variable%

出力は次のとおりです。

Alias name: 1

そして、置換コマンドを に変更するECHO Alias name: 2と、出力が異なりました。

ECHO is off.

これは、変数が初期化されなかっFINDたことを意味します。これは、コマンドが今回入力ストリームで指定された文字列を見つけることができなかったためです。

結論: の出力にはkeytool、実行時に検索された用語が含まれていない可能性が高く、その結果、変数が初期化されません。

于 2012-07-05T18:09:54.197 に答える