Problemas de entrada de arquivo em lote no computador remoto

2

Criei um arquivo em lotes que recebe várias entradas e as usa nos comandos a seguir. Esse script funciona bem no meu computador, mas quando eu o coloco em outro computador e uso o PsExec.exe para executar remotamente esse arquivo ... ele não funciona como se estivesse funcionando ... O arquivo em lotes funciona bem se executado no mesmo computador ... esse erro ocorre apenas na rede.

É suposto levar para entradas e usá-los como ..

set / p ip = Digite o ip: [O usuário digita 192.168.1.1]
set / p sub = Digite o sub: [O usuário digita 255.255.255.0]
eco% ip% máscara de sub-rede% sub%

Deve ecoar

192.168.1.1 máscara de sub-rede 255.255.255.0

em vez disso, ecoa

1 máscara de sub-rede 2

nem para para receber a outra entrada. Em palavras mais simples, é apenas pegar o primeiro caractere de qualquer coisa digitada. Qualquer ajuda?

Kunwar
fonte

Respostas:

2

Este é um problema antigo com a entrada psexec. O problema parece estar no manuseio de pipes, basicamente o que o usuário digita na set/plinha é dividido em várias entradas e alimentado aos poucos para o arquivo em lotes, o que obviamente não é o que deveria funcionar.

A psexecsolução mais próxima de uma solução pura é o snippet de lote postado pelo usuário qazyno fórum PsExec da SysInternals em http://forum.sysinternals.com/psexec-do-not-recog-p_topic5101_post137110.html#137110 (aliás, o encadeamento foi iniciado) em 2006, e a resposta do qazy veio em 2012). O código basicamente antecipa a entrada quebrada e tenta remontar as peças em uma única sequência. Geralmente funciona, embora na minha experiência às vezes exija uma tecla ENTER extra para finalizar uma entrada de linha.

Uma alternativa que encontrei mais recentemente é paexecem https://www.poweradmin.com/paexec/ (isenção de responsabilidade obrigatória: não tenho afiliação / interesse com / no que poweradminquer que seja, mas gosto do fato de que eles paexecsão de código aberto e tenho usado para tarefas da vida real).

Por acaso, paexecparece acertar essa tubulação de entrada. Arquivo em lotetestsetp.cmd

@echo off

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

echo %ip% subnet mask %sub%

saídas

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
dxiv
fonte