0

以下は、リモートサーバーでcmdを実行するために私がやろうとしていることです。

serverList.txt の一例:

サーバー名&e:\a\b\c\abc edf\abc\

@echo on 
cd /d %~dp0 
setlocal EnableDelayedExpansion 
set serverList=serverList.txt 
for /f "usebackq tokens=1,2* delims=&" %%A in ("%serverList%") DO ( 
    SET directory = %%B 
    wmic /node:%%A process call create "cmd /c cd /d !directory! & !directory!\hello.cmd" 
) 
endlocal 
Pause 

しかし、ご覧のとおり、ディレクトリのパスには空白が含まれています。二重引用符を試しましたが、役に立ちません。スペースがなければ完璧に機能します。

どこで間違ったのだろうか。とても有難い!

JS

4

2 に答える 2

0

%%B を使用できるため、遅延拡張は必要ありません

これが失敗した場合は、WMIC の前に ECHO を配置し、コンソールに表示される内容を確認します。

@echo on 
cd /d %~dp0 
set "serverList=serverList.txt" 
for /f "usebackq tokens=1,2* delims=&" %%A in ("%serverList%") DO ( 
    wmic /node:%%A process call create "cmd /c cd /d "%%B" & hello.cmd " 
) 
endlocal 
Pause 

またはキックについては、これを試してください。Wmic は、forIndo コマンドを使用する奇妙なツールです。

@echo on 
cd /d %~dp0 
set "serverList=serverList.txt" 
for /f "usebackq tokens=1,2* delims=&" %%A in ("%serverList%") DO call :next "%%A" "%%B"
pause
goto :eof
:next
wmic /node:%~1 process call create "cmd /c cd /d "%~2" & hello.cmd " 
goto :EOF
于 2013-05-28T07:45:53.493 に答える