2017-03-01 139 views
0

我在格式化批處理以將reg查詢結果輸出到CSV文件字段時遇到困難。批處理:將查詢結果輸出到CSV結果

原始腳本:

@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%

的文件中讀取用於servernames節點到%%a文件然後建立到col1col4所需的數據和echo ES它,使用delayedexpansion。

使用空格分隔符分析reg query行,刪除前兩個標記並保留行的其餘部分。

wmic行在我的系統中產生了一條錯誤消息(無效選項),所以我幫2>nul處置了錯誤消息。

此過程重新創建輸出。如果您只是想附加到當前文件,您就會意識到這些更改。

+0

非常感謝。這正是我想要的。唯一的問題是它不輸出序列號結果。我感謝您的幫助!你是個節省時間的人! –

+0

我還想指出,如果我要正常輸入,那麼獲取序列確實有用。我提到這是爲了澄清製造商是否輸入它的任何混淆。 –

+0

如果我使用'/ node:localhost',我就樂在其中了。可能我在文件中錯誤地指定了'%% a',儘管'reg query'似乎與我的文件設置一起工作。 – Magoo