Вам действительно нужен пакетный скрипт? Возможно, все, что вы хотите сделать, может быть сделано непосредственно из Perl или вызвано непосредственно Perl с помощью его команды system
.
Если необходим пакетный скрипт, что не так с созданием временного файла для скрипта и последующим его выполнением с system
? См. File :: Temp , который даже автоматически удалит временный файл после того, как вы закончите.
Если стратегия виртуальных пакетных файлов неизбежна, вы можете использовать опции /C
и, возможно, /S
, равные cmd
. Примерно так:
use strict;
use warnings;
my @batch_commands = (
'dir',
q{echo "Make sure quoting isn't busted"},
'ipconfig',
);
# Use & or &&, depending on your needs. Run `cmd /?` for details.
my $virtual_bat_file = join " &\n", @batch_commands;
system "cmd /C $virtual_bat_file";
Но это очень неправильно. Должен быть лучший способ достичь любой цели вашего приложения. Кстати, когда вы запустите cmd /?
, чтобы узнать о /C
, /S
и &
против &&
, вы быстро поймете, насколько ужасно в Land of Batch . Держитесь подальше, если это возможно.