2016-09-27 156 views
-2

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

因此,它可以映射一個驅動器,但基本上未能超出。

我很抱歉如此模糊。

+0

你爲什麼要調用'findstr'兩次?它看起來像第二個'for'應該運行'psexec'命令,而不是'findstr'命令。 –

+0

你能展示那看起來像什麼嗎? –

+1

不確定任何人都可以幫助缺乏細節。你只顯示你的批處理文件的一部分。我們不知道機器列表的格式是什麼文件。您嘗試從中獲取信息的XML文件也一樣。 – Squashman

回答

0

「不工作」是無用的描述。你會問這個問題DID是否工作?

SETLOCAL ENABLEDELAYEDEXPANSION 
FOR /F %%A in ('TYPE "%listT%"') do (
bin\psexec -u %USER_NAME% -p %PASSWORD% \\%%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! 
) 

但是由於你沒有描述你打算做什麼,這是一個猜測遊戲,看它是否正確。

此代碼應該file.xml設置asset最後 「MachineID.AssetNumber」。

elemnt %var%for開始執行之前的值var。要查看可能更改的值,請使用SETLOCAL ENABLEDELAYEDEXPANSION並使用!var!,如在成千上萬的So項中所解釋的,如果您搜索delayedexpansion

而在這種情況下,或許echo %%b而不是set asset...是你想要的 - 列出所有的條目。

...或不。 Insufficienct information ...

+0

上面編輯。希望能幫助到你。基本思想:通過psexec連接到計算機,findstr特定項目,保存到變量。 –