批处理:将Reg查询输出到CSV结果中

批处理:将Reg查询输出到CSV结果中,csv,batch-file,cmd,command-line-interface,Csv,Batch File,Cmd,Command Line Interface,我很难格式化一个批以将reg查询结果输出到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\S

我很难格式化一个批以将reg查询结果输出到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 设置sourcedir=U:\sourcedir 设置destdir=U:\destdir 设置文件名1=%sourcedir%\q4251299.txt 设置outfile=%destdir%\outfile.txt %filename1%do中的/f%%a 对于1,1,4中的/L%%s,请设置列%%s= 设置col1=%%a 对于'reg query\\%%a\HKLM\HARDWARE\DESCRIPTION\SYSTEM\BIOS/v SystemSKU'中的/f令牌=2*delims=%%s,请设置col2=%%t 对于'reg query\\%%a\HKLM\HARDWARE\DESCRIPTION\SYSTEM\BIOS/v SystemProductName'中的/f令牌=2*delims=%%s,请设置col3=%%t 对于wmic/node:%%a bios get serialnumber 2^>nul中的/f delims=%%t,请设置col4=%%t 回响col1!,!可乐2!,!可乐3!,!可乐4! >%输出文件% 后藤:EOF 您需要更改sourcedir和destdir的设置以适应您的环境

我在测试中使用了一个名为Q4251299.txt的文件,其中包含一些虚拟数据

生成定义为%outfile%的文件

将servernames文件读取到%%a,然后使用所需数据建立col1到col4,并使用delayedexpansion进行回显

reg查询行使用空格分隔符进行解析,删除前两个标记并保留行的其余部分

wmic行在我的系统上生成了一条错误消息无效选项,因此我使用2>nul来处理该错误消息


此过程将重新创建输出。如果您只想附加到当前文件中,您已经知道所做的更改。

非常感谢。这正是我想要的。唯一的问题是它没有输出序列号结果。我感谢你的帮助!你真节省时间!我还想指出的是,如果我正常输入,get序列确实可以工作。我提到这一点是为了澄清制造商是否输入它的任何困惑。如果我使用/node:localhost,我会很高兴地工作。可能是我在文件中错误地指定了%%a-尽管reg查询似乎与我的文件设置一起工作。Hi Magoo,关于我的最后一条评论,我通过将代码更改为:FOR/f tokens=2 delims==%%t in'wmic/node:%%a bios get serialnumber/format:list'DO SET col4=%%t来解决我的上一个问题,基本上是标记,delims和using/format:list我感谢您的帮助!你的密码帮了我大忙!