我很难格式化批处理以将查询结果输出到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主机名。
有没有人可以引导我走向正确的方向?
谢谢。
答案 0 :(得分: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
您需要更改sourcedir
和destdir
的设置以适合您的具体情况。
我使用了一个名为q42521299.txt
的文件,其中包含一些虚拟数据供我测试。
生成定义为%outfile%
的文件将服务器名称的文件读取到%%a
,然后使用delayedexpansion将col1
与所需数据col4
建立为echo
。
使用空格分隔符解析reg query
行,删除前两个标记并保留行的其余部分。
wmic
行在我的系统上产生了一条错误消息(无效选项),因此我要2>nul
处理错误消息。
此过程重新创建输出。如果您只想附加到当前文件,您就会知道这些更改。