2013-03-28 64 views
0

我正在運行等待用戶輸入的Perl腳本。我如何獲得批處理文件來運行腳本並提供輸入?用於向Perl腳本提供用戶輸入的Windows批處理腳本

我無法修改Perl源代碼來接受命令行參數。這是一個例子。

::fill.bat 
perl "lazy.pl" 
::Pause for 25 seconds tow wait for program to receive user input 
ping -n 25 -w 1000 127.0.0.1 > nul 
@Echo off 
::Want this to enter "y" when asked "Update script before using? [y]" 
Echo y 

enter image description here

回答

0

嘗試管道答案到你的Perl腳本的執行。

echo y| perl "lazy.pl" 

該方法works elsewhere。我敢打賭它也可能在這裏工作。


對於更復雜的腳本化交互,嘗試expectexpect是一個基於TCL的腳本解釋器,允許與控制檯應用程序進行腳本交互。下面是一個示例Expect for Windows腳本:

spawn perl lazy.pl 
expect "Update script before using? [y]" 
exp_send "y\r" 
expect "Another question? [y]" 
exp_send "y\r" 
+0

這對多個命令行參數不起作用。必須有一個更簡單的方法! – 2013-03-28 02:10:17

+0

那麼,你可以自動檢查提示並回答它們,或者你可以使用jscript或vbscript來發送我想要的SendKeys。 – rojo 2013-03-28 02:19:47

+0

@ user1022944 - 您需要在腳本中回答多少個問題?也許你可以用一堆'y'創建一個文本文件,每行一個,perl腳本要求的每個問題一個;然後輸入answers.txt | perl「lazy.pl」'。我從來沒有嘗試過這樣的事情,但它可能值得一試。 – rojo 2013-03-28 15:20:55