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 in For Schleife bei Batch benutzen

Mitglied: aKaLexeD

aKaLexeD (Level 1) - Jetzt verbinden

23.02.2011 um 18:11 Uhr, 5761 Aufrufe, 13 Kommentare

Hallo,

habe eine Batch mir For schleife.

For %%f IN (*.XML) do (

bla bla bla
bla bla bla
bla bla bla

SET FILE=%%f
)

möchte in jedem einzelnen vorgang file benutzen.
FILE ist aber leer.

Wie krieg es hin dass die Batches in der Schleife %%f nicht vergisst?
Mitglied: LittleFlame
23.02.2011 um 18:26 Uhr
Hallo KarlAlexander,

versuch es mal anstatt mit:

For %%f IN (*.XML) do (

bla bla bla
bla bla bla
bla bla bla

SET FILE=%%f
)

mit

FOR %%f IN (*XML) do (

bla bla bla
bla bla bla
bla bla bla

call :FILESET %%f

)

:FILESET
set FILE = %1


Auch wenn ich mir sicher bin, dass es bessere Lösungen gibt und ich nicht genau weiß, ob meine Denkweise richtig ist.
Wahrscheinlich krieg ich gleich von bastla o.ä. eins übergebraten. ^^

Ich versuch nur zu helfen und zu lernen :-P

Grüße,
LF
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 18:31 Uhr
Hallo LittleFlame,

Dein Ansatz ist schon richtig. Falls in dem
01.
bla bla bla 
02.
bla bla bla 
03.
bla bla bla
schon %FILE% benutzt werden soll, muss das alles aber in das Unterprogramm FILESET.

Außerdem würde ich schreiben:
call :FILESET "%%f"
Das verhindert, dass Dateinamen, die Leerzeichen enthalten, zerhackt und statt als EIN Parameter als MEHRERE Parameter übergeben werden.

und
set "FILE=%~1"
Die Tilde entfernt die umgebenden Anführungszeichen von %1. Die Anführungszeichen um FILE=%~1 verhindern, dass sich aus versehen ein Leer- oder Tabzeichen an den Dateinamen in %1 "pappt".

@KarlAlexander1990
Schau Dir mal mein Tutorial zur FOR-Schleife an, besonders das Kapitel "Exkurs (verzögerte) Variablenerweiterung" und die "Praxistipps". ACHTUNG! Mitdenken und selbst Testprogramme entwickeln und ausprobieren ist gefragt!

Gruß
Friemler
Bitte warten ..
Mitglied: LittleFlame
23.02.2011 um 18:42 Uhr
Hallo Friemler,

also nur, damit ich s auch richtig verstanden habe:

FOR %%f IN (*XML) do
(
call :FILESET "%%f"
)

:FILESET
set "FILE = %~1"
bla bla bla
bla bla bla
bla bla bla


@ Friemler
Wie hebe ich doch gleich Codezeilen hervor?


Schönen Abend an alle,
LF
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 18:48 Uhr
Hallo LittleFlame,

jepp, richtig. Aber auch an das
exit /b
bzw.
goto :eof
am Ende des Unterprogramms denken . Von wegen Back to Caller.

Zum formatieren von Codezeilen:
In der Eingabebox für Kommentare gibt es oben einen in ROT hervorgehobenen Link auf die Formatierungshilfe. Oder Du klickst unter meinem Beitrag auf "Mit Zitat" und schaust Dir an, was ich so getippselt habe.

Gruß
Friemler
Bitte warten ..
Mitglied: aKaLexeD
23.02.2011 um 19:02 Uhr
Leider, muss die bla bla bla in der for schleife sein.
das heißt: es werden sachen mit FILE ausgeführt und die sollen jedes mal aufgerufen werden sofern ein Datei gefunden wird.

In dem oben angegeben beispiel hab ich zwar %%f übergeben aber kann nur mit dem letzten was anfangen da zuerst di forschleife durchläuft und dann der rest.

Wobei ich ja eigentlich auch so machen kann

FOR %%f IN (*XML) do
(
call :FILESET "%%f"
GOTO NEXT
)

:NEXT
:FILESET
set "FILE = %~1"
bla bla bla
bla bla bla
bla bla bla


ODER?
Kann mir jemand die Lösung innerhalb der schleife geben?
Bitte warten ..
Mitglied: bastla
23.02.2011 um 19:08 Uhr
Hallo KarlAlexander1990!

Eigentlich sollte das so aussehen:
01.
setlocal 
02.
FOR %%f IN (*.XML) do ( 
03.
    call :FILESET "%%f" 
04.
05.
goto :eof 
06.
 
07.
:FILESET 
08.
set "FILE=%~1" 
09.
bla bla bla 
10.
bla bla bla 
11.
bla bla bla 
12.
goto :eof
wobei Du die Zeilen 2 bis 4 auch zu
FOR %%f IN (*.XML) do call :FILESET "%%f"
zusammenfassen kannst.

Grüße
bastla
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 19:10 Uhr
Hallo KarlAlexander1990,

Du hast mein Tutorial zur FOR-Schleife noch nicht gelesen.

Alles, was Du mit der Variablen %FILE% machen willst, muss in ein Unterprogramm, oder Du aktivierst und benutzt die verzögerte Variablenerweiterung. Das ist bei Dateinamen aber gefährlich, da sie ein Ausrufezeichen enthalten könnten, was auch als Steuerzeichen zur Kenntlichmachung von verzögert zu erweiternden Variablen dient => es kommt zu Fehlern.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
23.02.2011 um 19:17 Uhr
Das ist bei Dateinamen aber gefährlich, da sie ein Ausrufezeichen enthalten könnten, was auch als Steuerzeichen zur Kenntlichmachung von verzögert zu erweiternden Variablen dient => es kommt zu Fehlern.
... wobei es zur Not auch so ginge:
01.
setlocal disabledelayedexpansion 
02.
for %%f in (*.XML) do ( 
03.
    set "FILE=%%f" 
04.
    setlocal enabledelayedexpansion 
05.
    echo !FILE! 
06.
    type "!FILE!" 
07.
    echo bla bla bla 
08.
    endlocal 
09.
)
Grüße
bastla
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 19:20 Uhr
Hi bastla,

geht schon, ist aber HÄSSLICH.

Gruß
Friemler
Bitte warten ..
Mitglied: bastla
23.02.2011 um 19:22 Uhr
Hallo Friemler!

Auf Widerspruch brauchst Du nicht zu warten ...

Grüße
bastla
Bitte warten ..
Mitglied: Biber
23.02.2011 um 19:36 Uhr
[OT] Moin Friemler
Zitat von Friemler:
geht schon, ist aber HÄSSLICH.
Na ja...
Soll ich mal zum Vergleich ein Foto meiner Ex-Schwiegermutti hochladen?
Da wären auch einige Details nur ganz verzögert zu erweitern...

Grüße
Biber
[/OT]
Bitte warten ..
Mitglied: Friemler
23.02.2011 um 19:45 Uhr
[OT]
Hi Biber,

nee, lass mal die Ex-Schwiegermutti auf der heimischen Festplatte verstauben. Es gibt Dinge, die die Welt nicht braucht. Hässliche Schwiegermütter/hässlichen Code nimmt man nur im Notfall in Kauf.

Gruß
Friemler
[/OT]
Bitte warten ..
Mitglied: aKaLexeD
24.02.2011 um 08:36 Uhr
Bastla deine Lösung ist perfekt.
Danke an alle! =D
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch Variablen in for-Schleife
gelöst Frage von Dacki1107Batch & Shell2 Kommentare

Hallo Liebe Administratoren Ich kämpfe mit einem kleinen Problemchen und hoffe das Ihr mir helfen könnt. Ich versuche eine ...

Batch & Shell

Geschachtelte For Schleife Variable weiter benutzen

gelöst Frage von seb1212Batch & Shell4 Kommentare

Hallo zusammen, ich habe ein kleines Problem, im untenstehenden Code hat die Variable %Datum% in Zeile 13 leider keinen ...

Batch & Shell

Wert aus Batch Schleife in Variable speichern

gelöst Frage von anmelderBatch & Shell5 Kommentare

Ich möchte aus einem Verzeichnis alle Dateien mit einer bestimmten Endung anzeigen lassen. Die Dateien sind nummeriert. Der Nutzer ...

Batch & Shell

Batch: Variable Expansion in einer FOR-Schleife

Frage von .SesslBatch & Shell9 Kommentare

Hallo zusammen, leider finde ich dazu nicht viel, "vielleicht" könnt Ihr mir helfen. Da man keine Parameter Variablen der ...

Neue Wissensbeiträge
Windows 10

Neue Sicherheitslücke in Windows 10 (Version 1709) durch Google öffentlich geworden

Information von kgborn vor 16 StundenWindows 10

Vor ein paar Tagen haben Googles Sicherheitsforscher vom Projekt Zero eine Sicherheitslücke im Edge-Browser publiziert. Jetzt wurde eine weitere ...

iOS
IOS 11.2.6 verfügbar
Information von sabines vor 22 StundeniOS

Mit dem Update soll der Bug behoben werden, bei dem eine bestimmte Zeichenkette IOS zum Absturz gebracht hat.

Sicherheit
Sicherheitsrisiko: Die Krux mit 7-Zip
Information von kgborn vor 1 TagSicherheit8 Kommentare

Bei vielen Anwendern ist das Tool 7-Zip zum Entpacken von Archivdateien im Einsatz. Die Software ist kostenlos und steht ...

Internet

Datendealing im WWW Tracking Methoden immer brutaler

Information von sabines vor 1 TagInternet

Interessanter Artikel zum Thema Tracking im WWW und die immer "besseren" Methoden des Trackings. Professor Arvind Narayanan (Princeton-Universität) betreibt ...

Heiß diskutierte Inhalte
Router & Routing
LANCOM VPN CLIENT einrichten
Frage von Finchen961988Router & Routing27 Kommentare

Hallo, ich habe ein Problem und hoffe ihr könnt mir helfen, wir haben einen Kunden der hat einen Speedport ...

Windows Server
AD DS findet Domäne nicht, behebbar?
Frage von schapitzWindows Server25 Kommentare

Guten Tag, ich habe bei einem Kunden ein Problem mit den AD DS. Umgebung ist folgende: Windows Server 2016 ...

LAN, WAN, Wireless
VPN Cisco ASA5505 PaloAlto PA-200
gelöst Frage von YannoschLAN, WAN, Wireless22 Kommentare

Hallo zusammen, ich würde gerne ein Site-to-Site VPN zwischen den beiden Standorten aufbauen. PaloAlto PA200 Internetanschluss Deutsche Telekom GK ...

SAN, NAS, DAS
Qnap TS-453S Pro - Anbindung Active Directory
Frage von JuckieSAN, NAS, DAS13 Kommentare

Hallo zusammen, ich habe hier eine Qnap TS-453S Pro die sich mal so absolut gar nicht in das Active ...