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

Zeilenweise auslesen und Abspeichern in einer Variable

Frage Entwicklung Batch & Shell

Mitglied: Jacky86

Jacky86 (Level 1) - Jetzt verbinden

20.02.2009, aktualisiert 16:23 Uhr, 5457 Aufrufe, 3 Kommentare

Hallo zusammen

Ich habe folgendes Problem: Ich möchte etwas aus einer Text-Datei Zeilenweise auslesen und die Zeile noch in der FOR-Schleife dann in eine andere Variable speichern, die später dann noch bearbeitet wird.

Meine Text-Datei sieht folgendermassen aus (ist vorerst nur ein Test):

c:\test\test\test\test.html
c:\test2\test2\test2\test2.html

Hier meine Bat-Datei:

@echo off
FOR /F %%i IN (C:\test.txt) do (
echo %%i
set test=%%i
echo %test%
)

Und hier die Ausgabe:

c:\test\test\test\test.html
c:\test2\test2\test2\test2.html
c:\test2\test2\test2\test2.html
c:\test2\test2\test2\test2.html

Ich will aber, dass in der 2. Zeile "c:\test\test\test\test.html" steht, also das selbe wie in der oberen Zeile.
Irgendwie setzt er in der Variable "test" den Wert der 1. Zeile nicht ein, sondern nur den Wert der 2.

Kann mir das jemand weiterhelfen?

Danke & Gruss
Jacky86
Mitglied: ratzla
20.02.2009 um 18:19 Uhr
Innerhalb einer for schleife kann Windows keine Variablen veränden die in der Schleife selbst verwendet werden.
habe mich das selbst schon ziemlich geplagt.
Evtl. klappts wenn Du die Variable an einen andere Variable übergibst und diese dann bearbeites.
Viel Glück

(Mir hats irgenwann dann glangt.. ich habs dann unt Linux gemacht - da ist sowas ohne gefrickle möglich)
Bitte warten ..
Mitglied: bastla
20.02.2009 um 19:17 Uhr
Hallo Jacky86 und willkommen im Forum, hallo ratzla!

Eine kleine Richtigstellung zu
innerhalb einer for schleife kann ### keine Variablen veränden die in der Schleife selbst verwendet werden.
Defaultmäßig (weil "delayedExpansion" nicht aktiviert ist) können Werte von Variablen in einer "for"-Schleife zwar verändert werden, allerdings wird bereits zu Beginn der Schleifenverarbeitung der Variableninhalt gelesen und dann nicht mehr aktualisiert - daher wird bei der Ausgabe ein "alter" (bzw für die erste Zeile, da die Variable zu Beginn der Schleife noch keinen Inhalt hatte, gar kein) Wert verwendet.

Abhilfe kann hier ein
setlocal enabledelayedexpansion
schaffen - das sähe so aus:
01.
@echo off & setlocal enabledelayedexpansion 
02.
FOR /F %%i IN (C:\test.txt) do ( 
03.
    echo %%i 
04.
    set test=%%i 
05.
    echo !test! 
06.
)
Zu beachten ist nicht nur die veränderte Schreibweise mit "!" anstelle von "%", sondern auch, dass innerhalb der Variablen daraus resultierend "!" einfach "verschluckt" werden.

Nicht zuletzt deswegen eine alternative Vorgangsweise mit Verwendung eines Unterprogrammes:
01.
@echo off & setlocal 
02.
FOR /F %%i IN (C:\test.txt) do ( 
03.
    echo %%i 
04.
    set "test=%%i" & call :ProcessLine 
05.
06.
goto :eof 
07.
 
08.
:ProcessLine 
09.
echo %test% 
10.
goto:eof
Im Unterprogramm ":ProcessLine" (das als eigener "Batch im Batch" zu sehen ist) können bei Bedarf auch zusätzliche Modifikationen des Textes oder Berechnungen etc vorgenommen werden.

Grüße
bastla
Bitte warten ..
Mitglied: Jacky86
21.02.2009 um 14:32 Uhr
Hallo zusammen

Funktioniert super mit dem Unterprogramm.

Vielen Dank für eure Hilfe!

Gruss
Jacky86
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Text Zeilenweise auslesen und variable überprüfen
Frage von BruendlBatch & Shell11 Kommentare

Moin Moin, ich habe eine Textdatei mit folgendem Inhalt: ich möchte jetzt gerne die beiden Werte, die von einem ...

Batch & Shell
(BATCH:) Zeilenweise Txt auslesen und in eine Variable speichern
gelöst Frage von NincedBatch & Shell20 Kommentare

Hallo Leute, Ich weiß, es ist ein alter Hut, aber ich habe da ein paar Fragen bezüglich der for-Schleife ...

Batch & Shell
Textdatei zeilenweise in Variable schreiben
gelöst Frage von goodbytesBatch & Shell20 Kommentare

Hallo, mit einer Batch möchte ich mehrere Laufwerke mappen, abhängig vom Usernamen. Klar könnte ich auch für jeden User ...

Batch & Shell
Batch: Textdatei Zeilenweise auslesen
gelöst Frage von CreatorXBatch & Shell2 Kommentare

Hallo, ich weiß, zu dem Thema gibt es schon unzählige Threads. Ich hab auch einiges dazu gefunden und trotzdem ...

Neue Wissensbeiträge
Perl

Perl hat heute Geburtstag: 30 Jahre Perl: Lange Gesichter zum Geburtstag

Information von Penny.Cilin vor 3 StundenPerl2 Kommentare

Hallo, auch wenn es wenige wissen und noch weniger Leute es nutzen. Perl hat heute Geburtstag. 30 Jahre Perl ...

Sicherheit

Blackberry stirbt - Keine Updates für Priv mehr

Tipp von certifiedit.net vor 4 StundenSicherheit

Blackberry wird zu einer 08/15 Firma und geht wohl mehr und mehr den Weg, den HTC schon ging. Von ...

Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 2 TagenWindows 1010 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 2 TagenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Heiß diskutierte Inhalte
Batch & Shell
Kann man mit einer .txt Datei eine .bat Datei öffnen?
gelöst Frage von HelloWorldBatch & Shell21 Kommentare

Wie schon im Titel beschrieben würde ich gerne durch einfaches klicken auf eine Text oder Word Datei eine Batch ...

Netzwerkgrundlagen
Belibiges Teilnetz einer Subnetzmaske rausfinden?
gelöst Frage von CenuzeNetzwerkgrundlagen17 Kommentare

Wundervollen Gutentag, mittlerweile kann ich Subnetting so einigermaßen, aber ein Problem habe ich noch. Netzwerkadresse und Boradcast errechnen ist ...

LAN, WAN, Wireless
WLAN Reichweite erhöhen mit neuer Antenne
gelöst Frage von gdconsultLAN, WAN, Wireless12 Kommentare

Hallo, ich besitze einen TL-WN722N USB-WLAN Dongle mit einer richtigen Antenne. Ich frage mich jetzt ob man die Reichweite ...

Windows Server
Logging von "gesendeten Nachrichten" auf Terminalservern
gelöst Frage von Z3R0C0MM4N0THiN6Windows Server10 Kommentare

Hallo zusammen, kann mir jemand auf kurzem Wege sagen ob 1) die per Task-Manager (oder damals tsadmin) an Benutzer ...