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

时间:2016-08-16 15:30:19

标签: csv powershell batch-file

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

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

我的问题是,bat文件(或其他脚本语言)是否有可能检查电脑的IP地址或主机名,并在CSV中找到它并解析相应行中的节点ID和分支ID 。我怎样才能改变set / p来看csv。我不是编码员,所以不确定如何阅读CSV。

使用的批处理文件样本:

@echo off

setlocal

(set /p NodeId=Enter Node ID:)
(set /p GroupId=Enter Branch ID:)

:: Check that parameter is passed in
if %GroupId%.==. echo WS Group Id required as parameter & GoTo :END
if %NodeId%.==. echo WS Node Id required as parameter & GoTo :END
if %NodeId% GTR 31 echo WS Node Id should be less than 32 & GoTo :END

set GroupId=%GroupId%
set NodeId=%NodeId%

echo Installing Workstation Group=%GroupId% and Node=%NodeId%

1 个答案:

答案 0 :(得分:0)

假设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
)