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, 8260 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
CMD Verschlüsslung ( Batch ) (9)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
gelöst älteste dateien via batch löschen (6)

Frage von cali169 zum Thema Batch & Shell ...

Batch & Shell
gelöst Suchen und Ersetzen mehrerer Suchbegriffe per Batch (4)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...