批处理:将查询结果输出到CSV结果
问题描述:
我在格式化批处理以将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主机名。
有没有人可以引导我走向正确的方向?
谢谢。
答
@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%
的文件中读取用于servernames节点到%%a
文件然后建立到col1
与col4
所需的数据和echo
ES它,使用delayedexpansion。
使用空格分隔符分析reg query
行,删除前两个标记并保留行的其余部分。
wmic
行在我的系统中产生了一条错误消息(无效选项),所以我帮2>nul
处置了错误消息。
此过程重新创建输出。如果您只是想附加到当前文件,您就会意识到这些更改。
非常感谢。这正是我想要的。唯一的问题是它不输出序列号结果。我感谢您的帮助!你是个节省时间的人! –
我还想指出,如果我要正常输入,那么获取序列确实有用。我提到这是为了澄清制造商是否输入它的任何混淆。 –
如果我使用'/ node:localhost',我就乐在其中了。可能我在文件中错误地指定了'%% a',尽管'reg query'似乎与我的文件设置一起工作。 – Magoo