1

perl でファイルを作成して実行する方法について簡単な質問があります。perl を使用してファイルを生成し (実際には .bat スクリプトが必要です)、このファイルをプログラムの内部で実行できるかどうかを知りたかったのです。私はファイルを作成できることを知っており、perl を使用していますが、これをプログラムの内部で行いたいと考えています。だから、私がやりたいことは、実際にプログラムの内部でバッチスクリプトを作成することです(実際にはファイルはディスクに書き込まれず、すべてがメモリまたはperlプログラムに残ります)。ファイルの書き込みが完了すると、このファイルを実際に実行してから、書き込んだばかりのファイルを破棄できるようにしたいと思います。ディスク上にバッチ スクリプトを作成するのではなく、スクリプトの出力からテキスト ファイルを出力できるように、基本的にその場でバッチ スクリプトを作成しようとしています。

これを行うことはできますか?どうすればこれを行うことができますか?

よろしく、 ドリュー

4

2 に答える 2

2

本当にバッチスクリプトが必要ですか?おそらく、あなたがやりたいことはすべて、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";

しかし、これは非常に間違っていると感じます。アプリケーションのより大きな目標が何であれ、それを達成するためのより良い方法がなければなりません。ちなみに、、、およびvs.について学ぶために走ると、LandofBatchcmd /?それがどれほどひどいのかがすぐにわかります。可能な限り近づかないでください。/C/S&&&

于 2010-04-03T22:15:11.853 に答える
1

ファイルを開きます。コンテンツを作成します。ファイルを閉じます。ファイルを実行します (たとえば、system() を使用)。ファイルを削除します。

于 2010-04-03T21:36:57.307 に答える