@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
あなたの状況に合わせてsourcedir
とdestdir
の設定を変更する必要があります。
テスト用にダミーデータを含むq42521299.txt
という名前のファイルを使用しました。
は%
OUTFILE%として定義ファイルを生成し、次いでcol1
delayedexpansionを使用して、必要なデータとecho
ESそれを有するcol4
に確立%%a
にservernamesのファイルを読み込み。
reg query
行は、スペース区切り文字を使用して解析され、最初の2つのトークンが削除され、残りの行が保持されます。
私のシステムでは、wmic
行にエラーメッセージ(無効なオプション)が表示されていましたので、エラーメッセージを廃棄するには2>nul
を付けました。
この手順では、新しい出力が作成されます。現在のファイルに単に追加したい場合は、変更を認識しています。
ありがとうございました。それはまさに私が望むものです。唯一の問題は、シリアル番号の結果を出力しないことです。私はあなたの助けに感謝します!あなたは時間を節約しています! –
私はまた、通常のシリアル入力が必要な場合、シリアルを取得することができます。私は、製造者がそれを入力するかどうかにかかわらず、何らかの混乱を解消するためにこれを言及します。 –
'/ node:localhost'を使うとうれしく働いてくれました。おそらく '%% a 'をファイルで間違って指定したでしょうが、' reg query'が自分のファイル設定で動作するように見えました。 – Magoo