Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用批处理文件查找CSV中的文本(&;解析它以运行应用程序安装_Csv_Powershell_Batch File - Fatal编程技术网

使用批处理文件查找CSV中的文本(&;解析它以运行应用程序安装

使用批处理文件查找CSV中的文本(&;解析它以运行应用程序安装,csv,powershell,batch-file,Csv,Powershell,Batch File,我有一个应用程序要部署到1000多台Windows机器上。每台机器位于一个远程办公室,并被赋予一个节点ID 1-35和一个分支ID,例如001122(每个办公室唯一)。我让安装以静默方式运行,但有一次它要求您输入节点ID和分支ID。我正在批处理文件中使用以下代码,以允许运行安装的工程师手动输入详细信息,但这非常耗时,我们希望没有用户交互 我们在一个CSV中拥有所有主机名、IP、节点ID和分支ID 我的问题是,bat文件(或其他脚本语言)是否可以检查电脑的IP地址或主机名,并在CSV中找到它,并在

我有一个应用程序要部署到1000多台Windows机器上。每台机器位于一个远程办公室,并被赋予一个节点ID 1-35和一个分支ID,例如001122(每个办公室唯一)。我让安装以静默方式运行,但有一次它要求您输入节点ID和分支ID。我正在批处理文件中使用以下代码,以允许运行安装的工程师手动输入详细信息,但这非常耗时,我们希望没有用户交互

我们在一个CSV中拥有所有主机名、IP、节点ID和分支ID


我的问题是,bat文件(或其他脚本语言)是否可以检查电脑的IP地址或主机名,并在CSV中找到它,并在相应行中找到的节点ID和分支ID中进行解析。我如何更改集合/p以查看csv。我不是一个程序员,所以我不确定如何在CSV中阅读

使用的批处理文件示例:

@echo关闭
setlocal
(设置/p节点ID=输入节点ID:)
(设置/p组ID=输入分支ID:)
::检查是否传入了参数
如果%GroupId%。==。echo WS组Id作为参数是必需的&转到:结束
如果%NodeId%。==。echo WS节点Id需要作为参数&GoTo:END
如果%NodeId%GTR 31 echo WS节点Id应小于32&转到:结束
设置GroupId=%GroupId%
设置NodeId=%NodeId%
echo安装工作站组=%GroupId%和节点=%NodeId%

假设CSV如下所示:

Hostname,IP,NodeID,BranchID
Chef,192.168.0.10,1-35,001122
Secretary,192.168.0.12,1-38,001122
Test,192.168.0.24,1-40,00112
...
这应该起作用:

for /f "tokens=1-4 delims=," %%a in ('type file.csv ^|find /i "%computername%" ') do (
  echo Installing Workstation %%a, Group=%%d, Node=%%c with Address %%b
  set groupID=%%d
  set nodeID=%%c
)

“我不是一个程序员,所以我不确定如何在csv中阅读。”也许你应该去雇佣一个程序员。我们不是一个免费的编码服务。放弃批量和使用。大卫的问题-这是否可能并不意味着请给我的代码。如果有人建议使用Set以外的参数,我会很乐意研究一下。如果
hostname
等于%computername%`那么应该很容易。请参见
以获取/?
如何解析文件(或使用
查找/?
findstr/?
找到的行),谢谢stephen,主机名是%computername%。我不知道这些命令它们看起来与我需要的完全一样。我还将尝试在PowerShell中导入Csv请显示您的输出(理想情况下是(部分)您的
csv
文件)。抱歉,没有完成最后一条评论,错误地按了enter键。@Stephan对此表示感谢。我尝试了,但似乎没有设置参数。我是否将其放置在错误的部分。csv已在ok Installing Workstation---------COMPUTERS.csv,Group=,Node=中读取,地址为Installing Workstation PTSBBRANCH,Group=990610,Node=14地址为10.250.58.14'@echo off setlocal for/f“tokens=1-4 delims=,“%%a in('find/i“%computername%”computers.csv')do(echo安装工作站%%a,组=%%d,节点=%%c,地址为%%b)::如果%GroupId%。==,请检查是否传入参数。echo WS Group Id需要作为参数&GoTo:END如果%NodeId%。==。echo WS Node Id需要作为参数&GoTo:END如果%NodeId%GTR 31 echo WS Node Id应该小于32&GoTo:END'set GroupId=%GroupId%set NodeId=%NodeId%'echo安装工作站组=%GroupId%和节点=%NodeId%'运行批处理时,我会得到此信息。'安装工作站组=和节点=