为批处理文件提供输入的Perl脚本

为批处理文件提供输入的Perl脚本,perl,Perl,我有一个批处理文件“Sample.bat”,我正在使用Perl运行它:system(“Sample.bat”) Sample.bat提示输入用户名和密码,这些用户名和密码是我想用Perl脚本给出的。例如,当我使用Perl运行此批处理文件时: Enter username: Enter password: 我必须使用Perl脚本提供这两件事 批处理文件: @echo off set /p username=Enter your username:%1 set /p password=Enter

我有一个批处理文件“Sample.bat”,我正在使用Perl运行它:
system(“Sample.bat”)

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");
尝试:

然后在批处理文件中,您将使用
%1
作为用户名,使用
%2
作为密码

有关在批处理文件中使用参数的更多信息,请参阅:

使用模块

请注意,
~
符号用于
输入
键,即在执行过程中不必使用Enter键。因此,请使用
~
登录
发送键
方法。

更新:删除
%1
%2
并尝试上面的脚本。

在我的场景中,我不想编辑该批处理文件。我们有什么东西可以做的工作和批处理文件也不编辑。没有。没有一些严肃的编程就不行。您必须获取所创建的提示窗口的窗口句柄,找到文本字段的资源id,并以这种方式填充。我不知道如何用Perl实现这一点,我已经有一段时间没有用C.imo做过类似的事情了,不值得这么做,要么修改批处理文件,要么创建一个可以修改的副本。如果不想修改批处理文件,也许可以完全避免。它所做的任何事情都可以在Perl中实现,也可以通过system/backticks/pipe实现。@vol7ron,当我使用上述内容运行程序时,输出将等待用户手动按enter键。例如:输入username:Shaggy,然后等待我按Enter键。请看一看,我希望它能继续下去。@Shaggy:devendra的解决方案可以完成我上面所说的所有繁重的工作。在没有看到输出的情况下,我不确定挂起的是什么-我假设您正在谈论批处理文件
my $username = 'yourusername';
my $password = 'yourpassword';
system("Sample.bat $username $password");
use strict;
use warnings;
use Win32::GuiTest qw[ SendKeys ];

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

SendKeys( 'username~');

SendKeys( 'password~');