我想用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