Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Foreach in Batch umsetzen

Frage Entwicklung Batch & Shell

Mitglied: 84544

84544 (Level 1)

15.01.2010, aktualisiert 21:04 Uhr, 8547 Aufrufe, 6 Kommentare

Hallo,

gibt es eine Möglichkeit mit Batch eine foreach-Schleife umzusetzen?

Die foreach soll dann aus einer Datei xyz.txt Werte auslesen

Inhalt:
46723456,835462,2567889,22346787,1678895, usw.

Die Anzahl der Werte ist UNbestimmt.

Möglich wäre natürlich.

:schleife
set tok=1
for /f "tokens=%tok% delims=," %%g in ('xyz.txt') do set var=%%g
...........das was mit der Variable passieren soll.......
z.B.
echo %var% >> abc.txt
if %var%=="" goto ende
set /a tok=%tok%+1
goto schleife

:ende
exit

Aber mir kommt das zu umständlich vor.

Das müsste man doch irgendwie einfacher machen können.

Ich bedanke mich schonmal im Varraus für eure Hilfe^^
Mitglied: 60730
15.01.2010 um 21:22 Uhr
Zitat von 84544:
Hallo,

gibt es eine Möglichkeit mit Batch eine foreach-Schleife umzusetzen?
Die Anzahl der Werte ist UNbestimmt.
Ich bedanke mich schonmal im Varraus für eure Hilfe^^

gib doch mal for /? im Befehlsinterpreter deiner Wahl ein.
weder den Zähler, noch die Sprungmarke :schleife braucht man.

Und das wäre doch auch witzlos, wenn man zuerst wissen müßte, wieviele Treffer in einer Datei wären, um die mit einer For Schleife auszuwerten.

Gruß
Bitte warten ..
Mitglied: 84544
15.01.2010 um 21:29 Uhr
das hätte ich ja theoretisch durch if %var%=="" goto ende gelöst

PS: gib mir mal ein tipp wo ich in der for hilfe suchen soll.... hab da nichts wirklich gutes gefunden
Bitte warten ..
Mitglied: bastla
15.01.2010 um 22:01 Uhr
Hallo marci3xXx!

Ist vielleicht wirklich nicht ganz einfach herauszulesen ...

Versuch es damit:
for /f "delims=" %%g in (xyz.txt) do for %%i in (%%g) do >>abc.txt echo %%i
Soferne Du noch mehr mit den eingelesenen Werten vorhast (und diese daher tatsächlich jeweils einer Variablen zuweisen möchtest), kommt es darauf an, ob es in den Daten ein "!" gibt oder nicht - in ersterem Falle etwa so:
01.
@echo off & setlocal enabledelayedexpansion 
02.
for /f "delims=" %%g in (xyz.txt) do for %%i in (%%g) do ( 
03.
    set "var=%%i" 
04.
    echo !var! 
05.
)
Für den Fall 2:
01.
@echo off & setlocal 
02.
for /f "delims=" %%g in (xyz.txt) do for %%i in (%%g) do set "var=%%i" & call :ProcessValue 
03.
goto :eof 
04.
 
05.
:ProcessValue 
06.
echo %var% 
07.
goto :eof
Grüße
bastla
Bitte warten ..
Mitglied: 84544
15.01.2010 um 22:14 Uhr
ok danke ich glaub damit kann ich was anfangen

eigentlich habe ich mit der variable ne ganze menge vor^^ wieviele befehle/zeilen kann ich denn in "do (.........)" anbringen? hatte mal irgendwie probleme nach 8 stück oder so.... oder kann ich das dann unter ":processvalue" alles schreiben?
Bitte warten ..
Mitglied: bastla
15.01.2010 um 22:19 Uhr
Hallo Marci3xXx!

Ob es tatsächlich eine Beschränkung gibt, wird uns vermutlich Biber sagen können - mir ist dazu nix bekannt ...

Wenn Du die Unterprogrammvariante wählst, beginnt bei ":ProcessValue" ein zusätzlicher Batch in einer neuen Instanz - da wirst Du auf jeden Fall genug Platz haben.

Grüße
bastla
Bitte warten ..
Mitglied: 84544
15.01.2010 um 23:29 Uhr
vielen dank das hat mir richtig weitergeholfen
Bitte warten ..
Ähnliche Inhalte
Windows 7
gelöst Batch für User-TEMP-Ordner und Inhalte löschen (2)

Frage von planetIT2016 zum Thema Windows 7 ...

Batch & Shell
Batch Datei um Windows Update zu löschen (1)

Frage von lordofremixes zum Thema Batch & Shell ...

Batch & Shell
Findstr Path CMD ja - Batch Script nein - FireFox Profiles (2)

Frage von ChrisIO zum Thema Batch & Shell ...

Microsoft
Pop-Up Dialog in Batch erstellen (3)

Frage von batchx zum Thema Microsoft ...

Neue Wissensbeiträge
Heiß diskutierte Inhalte
Windows Server
WIndows Server 2016 core auf dem Intel NUC NUC5i5RYK i5 5250U (17)

Frage von IxxZett zum Thema Windows Server ...

LAN, WAN, Wireless
Zwei Subnetze mit je eigenem Router und Internetzugang verbinden (17)

Frage von hannsgmaulwurf zum Thema LAN, WAN, Wireless ...