2012-03-18 1 views
2

У меня есть пакетный файл «Sample.bat», который я бегу с помощью Perl: system("Sample.bat");Perl-скрипт, который обеспечивает ввод в пакетный файл

Sample.bat запрашивает имя пользователя и пароль, эти имя пользователя и пароль, я хочу дать с помощью Perl-скрипт. Например, когда я запускаю этот командный файл с помощью Perl:

Enter username: 
Enter password: 

Эти две вещи, которые я должен предоставить, используя скрипт Perl.

Пакетный файл:

@echo off 
set /p username=Enter your username:%1 
set /p password=Enter your password:%2 

Perl скрипт:

my $username="Shaggy"; 
my $password="shaggy"; 

my $setup = "C:/sample.bat"; 
system("$setup $username $password"); 

ответ

0

Try:

my $username = 'yourusername'; 
my $password = 'yourpassword'; 
system("Sample.bat $username $password"); 

Затем в пакетном файле, вы будете использовать %1 для имени пользователя и пароля %2 ,

Для получения дополнительной информации об использовании параметров в пакетном файле, см: How do I pass command line parameters to a batch file?

+0

В моем сценарии я не хочу редактировать этот командный файл. У нас есть какие-то вещи, которые будут делать работа, а командный файл также не редактируется. – Shaggy

+0

нет. не без какого-либо серьезного программирования. вам нужно будет получить дескриптор окна созданного приглашения, найти идентификатор ресурса текстовых полей и заполнить этот путь. Я не уверен, как это сделать с Perl, и прошло некоторое время, так как я сделал что-то подобное с помощью C. imo, не стоит усилий, либо модифицировать командный файл, либо создать копию, которую вы можете изменить. – vol7ron

+0

Если вы не хотите изменять командный файл, возможно, вы могли бы вообще его избежать. Все, что он делает, вы можете реализовать либо в Perl, либо через system/backticks/pipe. – DavidO

1

Использование Win32::GuiTest Модуль

use strict; 
use warnings; 
use Win32::GuiTest qw[ SendKeys ]; 

system 1, q["start sample.bat"]; 

SendKeys('username~'); 

SendKeys('password~'); 

Обратите внимание, что ~ знак для Enter ключа т.е. вы не должны использовать клавишу Enter во время исполнения. Используйте ~ вход в SendKeys метод.
Обновление: Удалить %1 и %2 и попробовать выполнить сценарий.

Смежные вопросы