远程计算机上的批处理文件输入问题

远程计算机上的批处理文件输入问题

我创建了一个批处理文件,它接受各种输入,然后在前面的命令中使用它们。这个脚本在我的计算机上运行良好,但是当我把这个脚本放到另一台计算机上并使用 PsExec.exe 远程执行这个文件时...它无法正常工作...如果在同一台计算机上执行,这个批处理文件运行良好...这个错误只发生在网络上。

它应该接受输入并使用它们,就像..

set /p ip=输入ip:[用户输入192.168.1.1]
set /p sub=输入sub:[用户输入255.255.255.0]
echo %ip% 子网掩码 %sub%

它应该回响

192.168.1.1子网掩码255.255.255.0

相反,它回响

1 子网掩码 2

它甚至不会停下来接受其他输入。简而言之,它只接受输入的任何内容的第一个字符。有什么帮助吗?

答案1

这是 psexec 输入的一个长期问题。问题似乎与管道处理有关,基本上,用户在行中输入的内容set/p被分解为多个输入并分段输入到批处理文件中,这当然不是它应该工作的方式。

最接近纯解决方案的是用户在 SysInternals 自己的 PsExec 论坛上psexec发布的批处理代码片段,网址为qazyhttp://forum.sysinternals.com/psexec-do-not-recog-p_topic5101_post137110.html#137110(顺便说一句,这个帖子是在 2006 年发起的,qazy 的回复是在 2012 年发布的)。代码基本上预期损坏的输入,并尝试将碎片重新组合成单​​个字符串。它大部分情况下都有效,但根据我的经验,有时需要额外的 ENTER 键来结束一行输入。

我最近发现的另一种选择paexechttps://www.poweradmin.com/paexec/(强制性免责声明:我与任何事物都没有任何关联/利益poweradmin,但我喜欢它们的paexec开源,并且我已经将它用于现实生活中的琐事)。

碰巧的是,paexec这个输入管道似乎是正确的。批处理文件testsetp.cmd

@echo off

set /p "ip=Enter the ip: "
set /p "sub=Enter the sub: "

echo %ip% subnet mask %sub%

输出

C:\etc>paexec \\otherpc cmd /c D:\temp\testsetp.cmd

PAExec v1.26 - Execute Programs Remotely
Copyright (c) 2012-2013 Power Admin LLC
www.poweradmin.com/PAExec


Connecting to otherpc...
Starting PAExec service on otherpc...

Enter the ip: 192.168.1.1
Enter the sub: 255.255.255.0
192.168.1.1 subnet mask 255.255.255.0
cmd returned 0

PAExec returning exit code 0

相关内容