Thread Batchdatei integrieren und Variablen für die aktuelle Session einbinden (3 answers)
Opened by muchamadin at 2012-12-12 16:42

Linuxer
 2012-12-12 17:17
#164178 #164178
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Hi,

hier mal ein Ansatz:

Anstatt %ENV verwende ich hier %foo, um die Ausgabe übersichtlicher zu haben.

Es wird nicht geprüft, ob eine zu ersetzende Variable wirklich gesetzt ist.
Variable3 ist nicht ausreichend benannt (fehlendes % am Ende)...

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#! /usr/bin/perl
use strict;
use warnings;

# use Getopt::Long;
# use CGI;

my %foo;

while ( my $line = <DATA> ) {

    if ( my ( $var, $wert ) = $line =~  m{set\s+([^=]+)=(.+)$} ) {

        if ( $wert =~ m/%/ ) {
            $wert =~ s/%([^%]+)%/$foo{$1}/g;
        }

        $foo{$var} = $wert;
    }
}

use Data::Dumper;
print Data::Dumper->new( [ \%foo ], [ '*foo' ])->Sortkeys(1)->Dump;


__DATA__
set Variable1=c:/ursprungspfad/site1
set Variable2=%Variable1%/info
set Variable3=verzeichnis
set Variable4=%Variable1%/%Variable3


Ausgabe:
Code: (dl )
1
2
3
4
5
6
%foo = (
'Variable1' => 'c:/ursprungspfad/site1',
'Variable2' => 'c:/ursprungspfad/site1/info',
'Variable3' => 'verzeichnis'
'Variable4' => 'c:/ursprungspfad/site1/%Variable3',
);
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Batchdatei integrieren und Variablen für die aktuelle Session einbinden