我有這個ini文件。如何使用Perl正則表達式解析ini文件或反正?
day=Mon
time=01:00:00
occurence=weekly
taskname=monitorschedule
taskrun=C:\monitor.bat
我想這樣的輸出用於在Windows XP中創建新的計劃作業。
schtasks.exe /create /tr c:\monitor.bat /sc weekly /d Mon /st 01:00:00 /tn monitorschedule /ru "system"
我已經試過這樣的事情:
my $file = 'C:\strawberry\perltest\ini file\MonitorSchedule.ini';
my $d;
my $t;
my $o;
my $n;
my $r;
my $u = '"system"';
open (TEST, "<", $file) or die $!; # open ini file
while(<TEST>) # read all lines of the ini file
{
if($_ =~ m/day/)
{
my $day = $_;
my @days = split('=', $day);
$d = $days[1];
}
if($_ =~ m/time/)
{
my $time = $_;
my @times = split('=', $time);
$t = $times[1];
}
if($_ =~ m/occurence/)
{
my $occurrence = $_;
my @occurrences = split('=', $occurrence);
$o = $occurrences[1];
}
if($_ =~ m/taskname/)
{
my $taskname = $_;
my @tasknames = split('=', $taskname);
$n = $tasknames[1];
}
if($_ =~ m/taskrun/)
{
my $taskrun = $_;
my @taskruns = split('=', $taskrun);
$r = $taskruns[1];
}
}
close TEST;
print "schtasks.exe /create /tr $r /sc $o /d $d /st $t /tn $n /ru $u";
不幸的是,輸出不是我想要的。
schtasks.exe /create /tr C:\monitor.bat /ru "system".
我不知道什麼是錯的。我錯在哪裏?
-1。你顯然沒有運行你粘貼的程序,因爲程序打印了一些包含'/ tn'的文件,而你顯示的輸出沒有。由於證據與故事不符,這不是一個好問題。請修改它。 –
@RobKennedy no sir,該程序不打印/ tn,是的,我想打印那一個,但這是我的問題。 – quinekxi
我認爲這裏使用正則表達式並不好。即使有可能,它也是不必要的複雜,你會遇到這樣的問題。 – Dalmas