2012-10-01 79 views
0

我需要幫助才能通過批處理文件實現以下功能。這裏就是我想要做的,將可執行文件(x86或x64)複製到基於Windows系統類型(x86或x64)的遠程計算機上

  1. 運行PSEXEC執行「系統的系統」,找到字符串「系統類型」

  2. 確定「系統類型」(無論是「X86型PC」或「基於X64的PC」)從PsExec輸出。

  3. 在我的電腦上本地映射驅動器,並根據系統類型複製文件。

這是我的腳本!

@echo off 
set logs="C:\logs.txt" 

for /f %%i in (C:\pro_arch.txt) do (

    echo %%i >> %logs% 
    PsExec.exe \\%%i -u domain\username -p "password" systeminfo | findstr /c:"System Type" >> "%Logs%" 

     if "%%i"=="System Type:    X86-based PC" (
     net use m: \\%%i\C$ /user:domain\username "password" 
     xcopy "C:\batch_file\x86.txt" \\%%i\C$\_support\setup\ /y 
     net use m: /delete 
     ) else (
     net use m: \\%%i\C$ /user:domain\username "password" 
     xcopy "C:\batch_file\x64.txt" \\%%i\C$\_support\setup\ /y 
     net use m: /delete 
     ) 
) 

的腳本運行良好,直到這部分

@echo off 
set logs="C:\logs.txt" 

for /f %%i in (C:\pro_arch.txt) do (

    echo %%i >> %logs% 
    PsExec.exe \\%%i -u domain\username -p "password" systeminfo | findstr /c:"System Type" >> "%Logs%" 

和輸出下面的基礎上,系統類型:

系統類型:基於X86 PC 或 系統類型:X64- based PC

執行IF語句時出現問題。它只將x64.txt複製到遠程機器,而不考慮遠程機器的系統類型。使用PSEXEC輸出也不起作用

命令替換,

for /f "tokens=*" %%a in '(PsExec.exe \\IPaddress -u domain\username -p "password" systeminfo | findstr /c:"System Type")' do set myvar=%%a

它說

| was unexpected at this time

有人能幫忙嗎?

回答

2

%%我包含計算機名稱,而不是你的PsExec的結果,所以當然你的IF語句永遠不會是真的。

在FOR/F DO()子句中使用時,您必須引用或轉義特殊字符,如|。我建議轉義爲^|

@echo off 
set logs="C:\logs.txt" 

for /f %%i in (C:\pro_arch.txt) do (
    echo %%i >> %logs% 
    for /f "delims=" %%A in ('PsExec.exe \\%%i -u domain\username -p "password" systeminfo ^| findstr /c:"System Type"') do (
    >> "%Logs%" echo %%A 
    if "%%A"=="System Type:    X86-based PC" (
     net use m: \\%%i\C$ /user:domain\username "password" 
     xcopy "C:\batch_file\x86.txt" \\%%i\C$\_support\setup\ /y 
     net use m: /delete 
    ) else (
     net use m: \\%%i\C$ /user:domain\username "password" 
     xcopy "C:\batch_file\x64.txt" \\%%i\C$\_support\setup\ /y 
     net use m: /delete 
    ) 
) 
) 
+0

我運行上面的腳本,但它說,系統找不到文件\\ ip_address。我不明白\\ %% i有什麼問題 – joso

+0

@ user1712002 - DO子句缺少前導單引號。現在全部修好了。 – dbenham

+0

是的,我找到了。還有一個更正是%Logs%的小寫字母l。非常感謝你的幫助。有用! – joso