2015-01-06 1 views
-1

Я начинаю с Perl, и мне нужно создать файл .pl, и у меня есть папка, содержащая около 30 EXE-файлов (внутри Folder1 in G: \ Folder1). Все они должны быть выполнены нажатием на файл .pl.Как запустить набор файлов .exe в папке через .bat-файл с использованием perl-скрипта

Моя попытка является:

use strict; use warnings; 
use autodie; # automatic error handling 

while (defined(my $file = glob 'C:\shekhar_Axestrack_Intern*.exe')) 
{ 
    open my $fh, "<", $file; # lexical file handles, automatic error handling 

    while (defined(my $line = <$fh>)) { 
    do system $fh ; 

    } 
    close $fh; 
} 

Пожалуйста, дайте мне знать, если моя логика правильная? Может кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь?

+0

Perl и Batch - совершенно разные языки. Вы хотите, чтобы командный скрипт вызывал скрипт Perl? – SomethingDark

+0

@SomethingDark на самом деле я уже проделал это через .bat-скрипт, но что происходит, когда я запускаю файл .exe через .bat, то он появляется в виде графического интерфейса, который содержит некоторую кнопку. Мой наставник хочет, чтобы эта кнопка была автоматически нажата моим кодом. Он предложил мне использовать perl для этого. Но я понятия не имею, как щелкнуть эту кнопку простым нажатием на .bat-файл. (Я имею в виду, что при нажатии на этот .bat-файл должен выполняться все .exe-файлы, каждый из которых всплывает в графическом интерфейсе, а также содержит кнопку в графическом интерфейсе, в которой файл .bat не должен запускать GUI-файл .exe, но также кнопка на графическом интерфейсе автоматически) – user3085082

+0

В настоящее время с использованием пакетного скрипта я просто могу запустить все .exe, но мне нужно вручную щелкнуть по кнопке GUI, полученной через каждый из этих .exe. Но мой наставник сказал мне, что, используя perl, вы можете автоматически щелкнуть по кнопкам, присутствующим в графическом интерфейсе, полученном на каждом .exe-файле, запущенном при нажатии на .bat-файл. – user3085082

ответ

1

Использование system выполнить ЕХ:

while (my $file = glob 'C:\shekhar_Axestrack_Intern\*.exe') { 
    system $file; 
} 

Кроме того, у меня есть ощущение, что вы имели в виду, чтобы написать 'C: \ shekhar_Axestrack_Intern * .exe' вместо «C: \ shekhar_Axestrack_Intern * .exe ».

+0

Я использовал glob .. но спасибо .. за ответ – user3085082

1

Я думаю, pl2bat может вам помочь. Это позволяет обернуть Perl-код в пакетный файл.

BTW Почему вы используете echo в своем Perl скрипте? Вы должны использовать print.

Редактировать: Вы отредактировали свой вопрос, и теперь вы хотите знать, как запускать все файлы exe из папки с помощью Perl?

Используйте команду system для запуска exe-файлов, обеспечивающих полный путь.

См: How to run an executable file using Perl on Windows XP?

Edit 2:do system $fh ; Это не то, как вы это делаете, пожалуйста, книгу (я бы предложил, начиная Perl Овидия) и начать обучение Perl.

+0

спасибо, но не могли бы вы увидеть последние два комментария, которые я сделал, чтобы ответить SomethingDark? знать, чего я хочу достичь. – user3085082

+0

Звучит домашнее задание для меня, и оно «слишком широкое». –

+0

, так что вы можете исправить проблему в моем коде, чтобы я мог запускать все.exe в папке 1 с использованием Perl-кода? После того, как я попробую myselt найти способ получить GUI-контроль, используя perl – user3085082

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

  • Нет связанных вопросов^_^