Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理文件-语法命令不正确_Batch File_Psexec - Fatal编程技术网

Batch file 批处理文件-语法命令不正确

Batch file 批处理文件-语法命令不正确,batch-file,psexec,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

我得到了下面的命令

@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。但它会提示“语法命令不正确”。我的代码出了什么问题?

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

@Echo关闭
Echo=“检查不健康的cmclient”>>“%~dp0pc\u down\u info.txt”
对于(“%~dp0pc_info.txt”)中的/F“UseBackQ”%%M,请执行以下操作(
(“%\uuuu AppDir\uuuu%Ping.exe”-n1-w1%%M)>nul2>&1
如果错误级别1(Echo=%%M已关闭>>“%~dp0pc\u down\u info.txt”)其他(
“C:\PsExec\PsExec.exe”-d-i\\%%M“%~dp0FixCM.exe”))
暂停

您会注意到我在双引号中放置了路径,因为这是一种很好的做法,而且我不知道脚本目录是否包含字符,例如空格,如果没有空格,将导致问题。

您只使用前导百分比符号引用命令行参数
%dp0
另外,
需要与的
在同一行上(如果
,则为
)。编辑上面的我的代码后,另一个错误提示“
psexec
不能识别为内部或外部命令”,太令人沮丧了。你确定在
C:
的根目录中有一个名为
psexec
的目录,其中包括一个名为
psexec
的可执行文件,其扩展名如
%pathext%
中所定义的那样吗?如果是这样的话,它可能很简单,就像
%~dp0
是一个不同的驱动器,你需要更改
cd C:\psexec
cd/d c:\psexec
或现有的另一个可执行文件,其名称为
psexec
,具有
%pathext%
中定义的另一扩展名。如果批处理文件位于不同的驱动器号中,则
cd
命令需要使用
/d
选项。不管怎样,为什么不直接指定完整的文件名执行psexec时的路径。否则,您将执行一大堆不需要执行的CD命令。我刚刚查看了代码,这些字符是做什么的?
2>&1
?我真的需要放置这些字符以避免错误吗?它不会避免错误,只是将标准和错误输出重定向到空设备。因为我们只需要现在,这些潜在消息的错误级别是多余的。