インストールされているアプリケーションのレジストリ値を多くのサーバーで照会しようとしています。私はサーバーをハードコードすることができ、繰り返しがたくさんあり、うまくいくようです。しかし、時にはサーバーのリストが変わることがあります。私はより合理的なモジュール方式を採用したいと考えています。バッチファイルのネストされたforループの正しい構文
私はテストファイルにサーバー名のリストを提供し、これらのサーバーのすべてのレジストリ値をクエリしてログファイルに出力することができます。
私の問題は間違いなく私のループ/変数の格納にあると思います。確かに何が起こっているのかはわかりませんが、一度レジストリ値を取得すると、それぞれのレジストリ値に関係なく、すべての単一サーバに対して出力されます。
この種のスクリプトではあまり経験はありませんので、試行錯誤してこのことをまとめてみました。以下はこれまでのところです。私が作った悲惨な構文エラーを指摘してください。
これは基本的に、各サーバーにMcAfeeスキャンエンジンのバージョンがインストールされていることを確認するためです。 McAfeeコンソール自体からのレポートは常に信頼できるとは限りません。コンテンツが各サーバーに正常にプルダウンされていることを確認する必要があります。
完全なエンジンバージョンを作成するには2つのレジストリ値が必要です。そのため、両方を取得してから1つの文字列に結合する必要があります。
現時点では正しい出力が得られますが、実際には各サーバーにインストールされているものは表示されません。 1つの値が選択されて複製されるようなものです。
これは、コマンドラインで実行した場合にのみ有効です。最初の1〜2回は実行され、値は引き出されません。私が解決策からかなり離れていると感じる。あなたが提供することができます任意の助け
server1 : 5900.5647
server2 : 6000.4589
server3 : 5900.5647
server4 : 5900.5647
乾杯:
SET LOGFILE=C:\LogFile.log
For /f %%i in (servers.txt) DO (
for /f "tokens=3" %%a in ('reg query \\%%i\HKLM\SOFTWARE\McAfee\AVEngine /v EngineVersion32Major ^| find /i "EngineVersion32Major"') do set /a major=%%a
for /f "tokens=3" %%b in ('reg query \\%%i\HKLM\SOFTWARE\McAfee\AVEngine /v EngineVersion32Minor ^| find /i "EngineVersion32Minor"') do set /a minor=%%b
echo %%i: %major%.%minor% >> %LOGFILE%
)
のような出力が期待されます。
ブリリアントを使用することです!そんなに詳しく説明してくれてありがとう。私が言ったように、私はこれに対して比較的新しいもので、さまざまなことを一緒にマッシュしているようなものでした。乾杯。 – DMDMDM