批处理文件 - 语法命令是incorect

时间:2017-03-03 14:44:35

标签: batch-file psexec

我在下面得到了这个命令。

@echo off

pushd %~dp0
echo "checking unhealthy cmclient" >> %~dp0\pc_down_info.txt
for /F  %%M  in  (%~dp0\pc_info.txt) do (
        ping -n 1 -w 1 %%M >nul
        if errorlevel 1 echo %%M is down >> %~dp0\pc_down_info.txt
        If not errorlevel 1 (
                cd c:\psexec
                psexec -d -i \\%%M %~dp0\FixCM.exe 
            )
    )
pause

我尝试使用psexec远程执行文件。我在 pc_info.txt 中获得了PC列表。我试图执行共享驱动器中的 FixCM.exe 。但它提示"语法命令不正确"。我的代码怎么了?

1 个答案:

答案 0 :(得分:1)

这是一个快速重写,希望能够涵盖到目前为止提出的所有评论。

@Echo Off
Echo="checking unhealthy cmclient">>"%~dp0pc_down_info.txt"
For /F "UseBackQ" %%M In ("%~dp0pc_info.txt") Do (
    ("%__AppDir__%Ping.exe" -n 1 -w 1 %%M)>Nul 2>&1
    If ErrorLevel 1 (Echo=%%M is down>>"%~dp0pc_down_info.txt") Else (
        "C:\PsExec\PsExec.exe" -d -i \\%%M "%~dp0FixCM.exe"))
Pause

你会注意到我已经在doublequotes中放置了路径,因为这是一个很好的做法,我不知道脚本目录是否包含字符,例如空格,如果没有它们会导致问题。