Problemas de entrada de arquivo em lote no computador remoto

2

Eu fiz um arquivo em lotes que usa várias entradas e depois as usa nos comandos à frente. Este script funciona bem no meu computador, mas quando eu coloco este script em outro computador e uso o PsExec.exe para executar remotamente este arquivo ... ele não funciona como se estivesse funcionando ... O arquivo de lote é executado corretamente se executado no mesmo computador ... esse erro só ocorre na rede.

Ele deve levar para insumos e usá-los como ...

set /p ip=Enter the ip: [The user enters 192.168.1.1]
set /p sub=Enter the sub: [The user enters 255.255.255.0]
echo %ip% sub net mask %sub%

Deve ecoar

192.168.1.1 sub net mask 255.255.255.0

em vez disso echos

1 sub net mask 2

não pára nem para pegar a outra entrada. Em palavras mais simples, é só pegar o primeiro caractere de qualquer coisa que tenha entrado. Qualquer ajuda?

    
por Kunwar 29.11.2015 / 15:27

1 resposta

2

Este é um problema de longa data com a entrada psexec. O problema parece ser com o manuseio de tubos, basicamente o que o usuário digita na linha set/p é dividido em várias entradas e alimentado em partes no arquivo em lote, o que obviamente não é o modo como deve funcionar.

O mais próximo de uma solução psexec pura é o snippet de lote postado pelo usuário qazy no fórum PsExec da SysInternals em link (aliás, o tópico foi iniciado em 2006, e a resposta do qazy veio em 2012). O código basicamente antecipa a entrada quebrada e tenta remontar as partes em uma única string. Isso funciona principalmente, embora na minha experiência, às vezes, requer uma chave ENTER extra para finalizar uma entrada de linha.

Uma alternativa que encontrei mais recentemente é paexec do link (aviso obrigatório: não tenho afiliação / interesse com / em poweradmin , mas eu gosto do fato de que seu paexec é de código aberto, e eu usei para tarefas da vida real).

Por acaso, paexec parece ter esse fluxo de entrada correto. Arquivo em lote testsetp.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
    
por 30.11.2015 / 01:25