我想用psexec连接到远程机器,使用findstr解析文件并将所需记录保存到稍后使用的变量中。windows批处理文件:psexec和findstr
这里是C:\目录位置\ file.xml:
<Editable default="XXX07770004183" description="Station Id" name="MachineID.PSID" regex="^XXX[a-zA-Z0-9]{4}[0-9]{4}[a-zA-Z0-9]{3}$"/>
<Editable default="17" description="Machine Number" name="MachineID.MachineID" regex="^[0-9]+$"/>
<Editable default="32" description="Asset number" name="MachineID.AssetNumber" regex="^[0-9]+$"/>
<Editable default="AAALLL74" description="Serial number" name="MachineID.SerialNumber" regex="^[a-zA-Z0-9]+$"/>
如果我手动连接到远程计算机并运行以下FINDSTR,就会报上面的正确值:32
for /f tokens^=2^ delims^=^" %%a in ('findstr /C:"c:\dir here\file.xml') do set asset=%%a
echo %asset%
我想通过使用psexec连接到机器来将这两者连接在一起,请在c:\ dir here \ file.xml中查找并查找资产编号并将其保存到变量中。对于这个问题,我应该可以将c:\ dir中的任何字段保存在这里\ file.xml中。
我曾尝试:
@ECHO Off
SETLOCAL EnableDelayedExpansion
SET listT=list.txt
FOR /F %%A in ('TYPE "%listT%"') do (
bin\psexec -u registeredused -p secret \\%%A -s cmd /c findstr /C:"MachineID.AssetNumber" "c:\dir here\file.xml"
for /f tokens^=2^ delims^=^" %%b in ('findstr /C:"MachineID.AssetNumber" "c:\dir here\file.xml"') do set asset=%%b
echo %asset%
)
结果:
>find.cmd
PsExec v1.94 - Execute processes remotely
Copyright (C) 2001-2008 Mark Russinovich
Sysinternals - www.sysinternals.com
cmd exited on 172.16.1.41 with error code 1.
ECHO is off.
因此,它可以映射一个驱动器,但基本上未能超出。
我很抱歉如此模糊。
你为什么要调用'findstr'两次?它看起来像第二个'for'应该运行'psexec'命令,而不是'findstr'命令。 –
你能展示那看起来像什么吗? –
不确定任何人都可以帮助缺乏细节。你只显示你的批处理文件的一部分。我们不知道机器列表的格式是什么文件。您尝试从中获取信息的XML文件也一样。 – Squashman