Masalah input file batch pada komputer jarak jauh


2

Saya membuat file batch yang mengambil berbagai input dan kemudian menggunakannya dalam perintah di depan. Script ini berfungsi dengan baik di komputer saya tetapi ketika saya meletakkan script ini di komputer lain dan menggunakan PsExec.exe untuk mengeksekusi file ini dari jauh ... itu tidak berfungsi seperti itu berfungsi ... File batch berjalan dengan baik jika dieksekusi pada komputer yang sama ... kesalahan ini hanya terjadi pada jaringan.

Seharusnya mengambil input dan menggunakannya seperti ..

set / p ip = Masukkan ip: [Pengguna memasuki 192.168.1.1]
set / p sub = Masukkan sub: [Pengguna memasukkan 255.255.255.0]
echo% ip% sub net mask% sub%

Seharusnya gema

192.168.1.1 subnet mask 255.255.255.0

sebaliknya itu bergema

1 subnet mask 2

bahkan tidak berhenti untuk mengambil input lainnya. Dengan kata sederhana, ini hanya mengambil karakter pertama dari apa pun yang dimasukkan. Ada bantuan?

Jawaban:


2

Ini adalah masalah lama dengan input psexec. Masalahnya tampaknya berkaitan dengan penanganan pipa, pada dasarnya apa yang set/pdimasukkan pengguna pada saluran akan dipecah menjadi beberapa input dan dimasukkan secara terpisah ke file batch, yang tentu saja bukan cara yang seharusnya berfungsi.

Yang paling dekat dengan psexecsolusi murni adalah cuplikan batch yang diposting oleh pengguna qazydi forum PsExec milik SysInternals di http://forum.sysinternals.com/psexec-do-not-recog-p_topic5101_post137110.html#137110 (kebetulan, utas dimulai) kembali pada tahun 2006, dan balasan qazy datang pada tahun 2012). Kode ini pada dasarnya mengantisipasi input yang rusak, dan mencoba merakit kembali potongan-potongan menjadi satu string. Sebagian besar berfungsi, meskipun dalam pengalaman saya terkadang diperlukan tombol ENTER tambahan untuk mengakhiri input baris.

Alternatif yang saya temukan baru-baru ini adalah paexecdari https://www.poweradmin.com/paexec/ (penafian wajib: Saya tidak memiliki afiliasi / minat dengan / dalam hal poweradminapa pun, tapi saya suka fakta bahwa mereka paexecbersumber terbuka, dan saya memiliki menggunakannya untuk tugas-tugas kehidupan nyata).

Seperti yang terjadi, paexectampaknya mendapatkan input pipa ini dengan benar. File kumpulantestsetp.cmd

@echo off

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

echo %ip% subnet mask %sub%

output

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.