Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Variable aus String wird nicht aufgelöst - Batch

Mitglied: ForgottenRealm

ForgottenRealm (Level 1) - Jetzt verbinden

27.08.2010, aktualisiert 28.08.2010, 4992 Aufrufe, 3 Kommentare

Hallo

Ich stehe wieder einmal vor einem Problem, welches ich auch nach längerer Zeit nicht lösen konnte.


Hiermit wird eine csv Datei ausgelesen, wobei die erste Zeile (überschriften, beschreibungen) übersprungen wird.

01.
[...] 
02.
 
03.
:: Auslesen der Quell- und Zieldaten aus Datenbank 
04.
for /F "skip=1 delims=" %%I IN (%INDEX%) DO set "LINE=%%I" & Call :Start 
05.
 
06.
[...] 
07.
:: Für jede Zeile in der csv Datei wird nun in mit den Tokens 1 bis x ein einzelner Wert ausgelesen und in eine Variable gespeichert. 
08.
 
09.
	:Start 
10.
:: Sicherungsname 
11.
for /F "tokens=1 delims=;" %%J IN ("%LINE%") DO set "JOBNAME=%%J" 
12.
:: Zielordner ohne Laufwerksangabe 
13.
for /F "tokens=2 delims=;" %%K IN ("%LINE%") DO set "TARGETPATH=%%K" 
14.
:: Quellordner ohne Umgebungsvariablen 
15.
for /F "tokens=3 delims=;" %%L IN ("%LINE%") DO set "SOURCE=%%L" 
16.
:: Name der Dummydatei zur Auswahl des Ziellaufwerks 
17.
for /F "tokens=4 delims=;" %%M IN ("%LINE%") DO set "DUMMY=%%M" 
18.
:: Einzelne Datei, optional 
19.
for /F "tokens=5 delims=;" %%N IN ("%LINE%") DO set "FILE=%%N" 
20.
 
21.
[...] 
22.
 
23.
goto :eof
Soweit, sogut. Funktioniert alles.


Das Problem ist jetzt allerdings, dass ich in der csv Datei zwingend Variablen angeben/übergeben muss, um das Programm variabel zu halten.

Eine Beispielzeile aus der csv Datei:

Benutzer;Sicherung\Benutzer;%USERPROFILE%;Dummy.csr;

Nachdem die Funktion :Start die Variablen ausgelesen hat, interpretiert der 3. Token den Wert für %SOURCE% direkt als %USERPROFILE% und nicht, wie benötigt, als C:\User\[Benutzername]



Ich hoffe, es ist einigermaßen verständlich, wo das Problem liegt und mir kann jemand helfen.

[Edit Biber] Codeformatierung [/Edit]
Mitglied: bastla
27.08.2010, aktualisiert 24.07.2012
Hallo ForgottenRealm!

Versuch es mit
call set "SOURCE=%%L"
Abgesehen davon genügt eigentlich eine "for"-Schleife:
01.
for /F "tokens=1-5 delims=;" %%J IN ("%LINE%") DO ( 
02.
    REM Sicherungsname 
03.
    call set "JOBNAME=%%J" 
04.
    REM Zielordner ohne Laufwerksangabe 
05.
    call set "TARGETPATH=%%K" 
06.
    REM Quellordner ohne Umgebungsvariablen 
07.
    call set "SOURCE=%%L" 
08.
    REM Name der Dummydatei zur Auswahl des Ziellaufwerks 
09.
    call set "DUMMY=%%M" 
10.
    REM Einzelne Datei, optional 
11.
    call set "FILE=%%N" 
12.
13.
echo %JOBNAME%_%TARGETPATH%_%SOURCE%_%DUMMY%_%FILE%
Etwas kompakter ließe sich das auch so schreiben:
01.
for /F "tokens=1-5 delims=;" %%J IN ("%LINE%") DO ( 
02.
    call set "JOBNAME=%%J"     & REM Sicherungsname 
03.
    call set "TARGETPATH=%%K"  & REM Zielordner ohne Laufwerksangabe 
04.
    call set "SOURCE=%%L"      & REM Quellordner ohne Umgebungsvariablen 
05.
    call set "DUMMY=%%M"       & REM Name der Dummydatei zur Auswahl des Ziellaufwerks 
06.
    call set "FILE=%%N"        & REM Einzelne Datei, optional 
07.
08.
echo %JOBNAME%_%TARGETPATH%_%SOURCE%_%DUMMY%_%FILE%
Grüße
bastla

P.S.: Findest Du nicht auch, dass als Code formatierte Batches zumindest schon mal besser aussehen?
Bitte warten ..
Mitglied: ForgottenRealm
27.08.2010 um 22:49 Uhr
Hallo bastla

War mir eigentlich klar, dass DU mir wieder helfen kannst

Auf die Idee mit dem Call set wäre ich im Leben nicht gekommen, vielen Dank!

Das mit in For schleifen mit Tokens die %% Variablen automatisch fortgeführt werden, wusste ich ebenfalls noch nicht - gut zu Wissen, spart mir viel Arbeit.


Und auch was die Formatierung angeht muss ich dir Recht geben, allerdings vergesse ich jedes mal, den Code als Code zu formatieren ...


Also noch einmal, viele Dank für die schnelle Hilfe!
Bitte warten ..
Mitglied: bastla
27.08.2010 um 22:56 Uhr
Hallo ForgottenRealm!

Na ja, ich war zufällig gerade da ...

Freut mich jedenfalls, wenn Du etwas mitnehmen kannst.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Teil eines Strings als Variable setzen
gelöst Frage von tHe-jAyBatch & Shell2 Kommentare

Hallo, für ein kleines Batch-Script benötige ich einen Servicenamen als Variable. Den Servicenamen frage ich über folgenden Befehl ab: ...

Batch & Shell

Select-string zeilenweise in einzelne variablen

gelöst Frage von adm2015Batch & Shell4 Kommentare

Hallo zusammen, wie bekomme ich einen String welcher mehrere Zeilen beinhaltet, Zeilenweise in einzelne Variablen geschrieben? test1.txt test2.txt test3.txt ...

Perl

In Textdatei nach String suchen und diesen als Variable weiterverarbeiten

gelöst Frage von hokoPerl4 Kommentare

Hallo, Ich möchte in einem Pelrscript eine Textdatei nach einem String durchsuchen und diesen dann weiterverarbeiten. Der zu suchende ...

Batch & Shell

Batch - Variablen

gelöst Frage von Marlon1Batch & Shell2 Kommentare

Hallo, Ich habe eine Frage zu Variablen. Und zwar ob es irgendwie geht das Batch mit ein IF Befehl ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Debian
Wie finde ich den betroffenen user
Frage von ProtectedDebian8 Kommentare

Hallo, Wie kann ich den User finden der dies verursacht hat? Betriebsystem ist Debian 7 your Server/Customer with the ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall8 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...