バッチファイルを使用して次のことを達成するために助けが必要です。これが私がやろうとしていることです。
psexec を実行して「systeminfo」を実行し、文字列「System Type」を見つけます。
PsExec の出力から「システムの種類」(「X86 ベースの PC」か「X64 ベースの PC」か) を特定します。
PC でドライブをローカルにマップし、システムの種類に基づいてファイルをコピーします。
これが私のスクリプトです!
@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 ベースの 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
誰か助けてくれませんか?