2017-03-01 9 views
0

バッチをフォーマットして、クエリ結果をCSVファイルフィールドに出力するのが困難です。バッチ:CSV結果への出力Regクエリ

生スクリプト:

@echo off 
for /f %%a in (\\localhost\C$\users\myusername\desktop\servers2.txt) do (
    echo %%a 
    reg query "\\%%a\HKLM\HARDWARE\DESCRIPTION\SYSTEM\BIOS" /v "SystemSKU" 
    reg query "\\%%a\HKLM\HARDWARE\DESCRIPTION\SYSTEM\BIOS" /v "SystemProductName" 
    wmic /node:%%a bios get serialnumber 
)>>testing.csv 
pause 

私は、各クエリの結果は、左から右に細胞内に入力する必要があります。最初の "echo %% a"はservers2.txtのPCホスト名です。

正しい方向へ私を導くことができる人はいますか?

ありがとうございます。

答えて

1
@ECHO Off 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET "sourcedir=U:\sourcedir" 
SET "destdir=U:\destdir" 
SET "filename1=%sourcedir%\q42521299.txt" 
SET "outfile=%destdir%\outfile.txt" 
(
for /f %%a in (%filename1%) do (
    FOR /L %%s IN (1,1,4) DO SET "col%%s=" 
    SET col1=%%a 
    FOR /f "tokens=2*delims= " %%s IN ('reg query "\\%%a\HKLM\HARDWARE\DESCRIPTION\SYSTEM\BIOS" /v "SystemSKU"') DO SET col2=%%t 
    FOR /f "tokens=2*delims= " %%s IN ('reg query "\\%%a\HKLM\HARDWARE\DESCRIPTION\SYSTEM\BIOS" /v "SystemProductName"') DO SET col3=%%t 
    FOR /f "delims=" %%t IN ('wmic /node:%%a bios get serialnumber 2^>nul') DO SET col4=%%t 
    ECHO !col1!,!col2!,!col3!,!col4! 
) 
)>"%outfile%" 

GOTO :EOF 

あなたの状況に合わせてsourcedirdestdirの設定を変更する必要があります。

テスト用にダミーデータを含むq42521299.txtという名前のファイルを使用しました。

は%

OUTFILE%として定義ファイルを生成し、次いでcol1 delayedexpansionを使用して、必要なデータとecho ESそれを有するcol4に確立%%aにservernamesのファイルを読み込み。

reg query行は、スペース区切り文字を使用して解析され、最初の2つのトークンが削除され、残りの行が保持されます。

私のシステムでは、wmic行にエラーメッセージ(無効なオプション)が表示されていましたので、エラーメッセージを廃棄するには2>nulを付けました。

この手順では、新しい出力が作成されます。現在のファイルに単に追加したい場合は、変更を認識しています。

+0

ありがとうございました。それはまさに私が望むものです。唯一の問題は、シリアル番号の結果を出力しないことです。私はあなたの助けに感謝します!あなたは時間を節約しています! –

+0

私はまた、通常のシリアル入力が必要な場合、シリアルを取得することができます。私は、製造者がそれを入力するかどうかにかかわらず、何らかの混乱を解消するためにこれを言及します。 –

+0

'/ node:localhost'を使うとうれしく働いてくれました。おそらく '%% a 'をファイルで間違って指定したでしょうが、' reg query'が自分のファイル設定で動作するように見えました。 – Magoo

関連する問題