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

bei for f delims-x werden for-befehle nur 1x ausgefuert?!?

Frage Entwicklung Batch & Shell

Mitglied: halo7one

halo7one (Level 1) - Jetzt verbinden

09.06.2008, aktualisiert 26.06.2008, 13656 Aufrufe, 10 Kommentare

ein einfaches for /f "delims=," %%i in ("%var%") do echo %var%
geht nicht... was mache ich falsch?

Guten Tag miteinander,
ich habe ein Problem das für mich, auch wenn ich mich mit for noch nicht soo gut auskenne, als einzige logische Erklärung ein Bug sein kann (auch dann bitte Lösungsvorschläge

Ich gehe der Einfachheit halber mal von der Beschreibung des for-Befehls aus:
01.
FOR /F ["Optionen"] %Variable IN ("Zeichenkette") DO Befehl [Parameter]
nun soll das ganze so aussehen:
01.
SETLOCAL EnableDelayedExpansion 
02.
set "option=1,2,3" 
03.
for /f "delims=," %%i in ("%option%") do echo %%i 
04.
pause
doch es wird nur ein echo ausgeführt, wenn auch dieses richtig. Was ist denn bitte an diesem simplen code falsch?

Ich weiß mir wirklich keinen Rat mehr und verzweifle noch daran X(

Also: HILFE!

ach ja hier noch meine Ausgabe (Zitat):
E:\Desktop>SETLOCAL EnableDelayedExpansion

E:\Desktop>set "option=1,2,3"

E:\Desktop>for /F "delims=," %i in ("1,2,3") do echo %i

E:\Desktop>echo 1
1

E:\Desktop>pause
Drücken Sie eine beliebige Taste . . .
(Zitat ende)

MfG, halo7one
Mitglied: miniversum
09.06.2008 um 21:38 Uhr
Das ist kein bug das stimmt so.
Du hast eine Zeichenkette die "1,2,3" lautet.
Diese teilst du in einzelne Teile auf, die durch ein "," getrennt sind. Der erste Teil steht in dem %%i dann.

Was du denke ich möchtest würdest du hiermit erreichen:
01.
SETLOCAL EnableDelayedExpansion 
02.
set "option=1 2 3" 
03.
for %%i in (%option%) do echo %%i 
04.
pause
miniversum
Bitte warten ..
Mitglied: bastla
09.06.2008 um 23:06 Uhr
@miniversum

Nur als Anmerkung: Deine Variante würde auch mit
01.
set "option=1,2,3"
funktionieren ...

Grüße
bastla
Bitte warten ..
Mitglied: halo7one
10.06.2008 um 16:57 Uhr
Hmm, erstmal danke für die schnellen Antworten.

Doch nun müsst ihr mir das doch etwas mehr verdeutlichen:
Mit delims gebe ich also nur die Trennzeichen an, falls ich den Zeichensatz in mehrere Tokens unterteilen will, oder wie?
Kann man denn auch die Platzhalter (nicht Trennzeichen) bestimmen?
Wenn nicht, dann würde ich gerne wissen, was alles die vordefinierten Platzhalter sind.

Nur des Interesses halber: kann man denn auch jedes Zeichen eines Satzes (z.B. "123") einzeln auswerten lassen, ein "," einfügen oder ähnliches was diesen Zweck erfüllen würde?
Bitte warten ..
Mitglied: miniversum
10.06.2008 um 17:20 Uhr
Mit delims gebe ich also nur die Trennzeichen an, falls ich den Zeichensatz in mehrere Tokens unterteilen will, oder wie?
Ja genau.
Delims sagt was das Trennzeichen ist udn mit tokens kanst du angeben welche Teile in den Variabeln stehen. Würdest du also z.B. tokens="2,3" angeben würde in %%i 2 und in %%j 3 stehen.

Was meinst du mit Platzhalter?

Nur des Interesses halber: kann man denn auch jedes Zeichen eines Satzes (z.B. "123") einzeln auswerten lassen, ein "," einfügen oder ähnliches was diesen Zweck erfüllen würde?

Du meinst sowas?
01.
SETLOCAL EnableDelayedExpansion 
02.
set "option=123" 
03.
:loop 
04.
if "%option%" equ "" goto:loopende 
05.
echo %option:~0,1% 
06.
set "option=%option:~1% 
07.
goto:loop 
08.
:loopende 
09.
pause
Bitte warten ..
Mitglied: halo7one
10.06.2008 um 17:30 Uhr
Ah danke bis zu dem %option:~0,1% hab ich es auch schon geschaft, nur das das set "option=%option:~1% hat mir gefehlt... darauf hätte ich selbst kommen können, TY

Mit Platzhalter meine ich bei z.B. set "option=1,2,3" die Kommas oder bei set "option=1 2 3" die Leerzeichen.
Bitte warten ..
Mitglied: Biber
10.06.2008 um 21:55 Uhr
Moin halo7one,

ich versuch mal eine Begriffsklärung anhand der Hilfe, die Du am CMD-Prompt zum FOR-Befehl aufrufen kannst:
01.
FOR /? 
02.
.... 
03.
.... 
04.
FOR /F ["Optionen"] %variable IN ('Zeichenkette') DO Befehl [Parameter] 
05.
FOR /F ["Optionen"] %variable IN (`Befehl`) DO Befehl [Parameter] 
06.
.... 
07.
    übersprungen. Das standardmäßige Verhalten bei der Analyse kann wahlweise 
08.
    durch den Parameter "Optionen" überschrieben werden. Das ist eine 
09.
    Zeichenkette in Anführungszeichen, welche eines oder mehrere Schlüssel- 
10.
    wörter enthält, um verschiedene Parameter für die Analyse anzugeben. Diese 
11.
    Schlüsselwörter sind: 
12.
 
13.
        eol=c           - Gibt das Zeichen für Zeilenendekommentare an 
14.
                          (nur eins). 
15.
        skip=n          - Gibt die Anzahl der Zeilen an, die am Anfang einer 
16.
                          Datei übersprungen werden. 
17.
        delims=xxx      - Gibt einen Satz von Trennzeichen an. Diese ersetzen 
18.
                          die Standardtrennzeichen TAB und Leerzeichen. 
19.
....
Was Du mit "Platzhalter" meintest, sind die "Trennzeichen", auf neudeutsch "Delimiter" oder in flapsigen Redmonder Jargon halt "delims".
Wenn die Werte (oder besser. die Token) durch Leerzeichen oder TABs getrennt sind, brauchst Du nichts angeben, denn das ist das Standardtrennzeichen.

Grüße
Biber
Bitte warten ..
Mitglied: bastla
10.06.2008 um 22:06 Uhr
... und falls doch das "for" ohne "/f" gemeint war, wären die Delimiter gleichfalls Blank und TAB sowie Komma und Semikolon ...

Grüße
bastla
Bitte warten ..
Mitglied: halo7one
10.06.2008 um 22:41 Uhr
Sers Biber,
Ich danke dir für die Ausführung, doch leider ist das nichts neues für mich :/ (bezieht sich auf deinen ersten Post)
Wenn ich durch delims die Trennzeichen angebe, die die Tokens voneinander trennt, dann wird mir für eine Zeichenkette jeder Token, den ich bestimmt habe (durch tokens=1,2,3,usw.) in eine andere Variable, wie z.B. %%i, %%j, usw. ausgegeben. Doch das will ich ja gar nicht!
Ich möchte, dass wie bei for ohne Parameter (und somit mit den Standardtrennzeichen) für jeden Token/Wert jeweils die Befehle nach do ausgeführt werden und dass NICHT bei EINEM "FOR-Durchlauf" alle Tokens auf einmal bearbeitet werden, indem sie in verschiedene Variablen unterteilt werden.

Und zu der Beschreibung von "delims" (aus dem CMD-Prompt):
Gibt einen Satz von Trennzeichen an. Diese ersetzen die Standardtrennzeichen TAB und Leerzeichen.
Wenn TAB und Leerzeichen alle Standardtrennzeichen sind, warum funktioniert dann auch das Komma (",")?
Also noch einmal meine Frage:
[...] dann würde ich gerne wissen, was alles die vordefinierten Platzhalter [=Standardtrennzeichen] sind

ok hat sich erledigt (Synchron-Post) TY
Würde jetzt nur gern wissen, ob man noch andere Trennzeichen definieren kann (das wäre dann wohl mit for /f ) und sich die for-Schleife genau so verhält, wie ohne das /f und mit Standardtrennzeichen (keine Unterteilung in verschiedene Variablen, nur in eine).

MfG,
halo7one
Bitte warten ..
Mitglied: Biber
10.06.2008 um 23:15 Uhr
Moin halo7one,

keine Unterteilung in verschiedene Variablen, nur in eine
Das wiederum würde heißen, das es gar keine Delimiter gibt (keine Delimiter->keine einzelnen Token bzw nur eines)
01.
>for /f "delims=" %i in ("1,2,3") do @echo %i 
02.
1,2,3 
03.
## -oder: Delims is mir wurscht, ich will alle Token- 
04.
>for /f "tokens=*" %i in ("1,2,3") do @echo %i 
05.
1,2,3 
06.
## geht auch mit Leerzeichen oder whatever 
07.
>for /f "tokens=*" %i in ("1 2 3") do @echo %i 
08.
1 2 3
Grüße
Biber
Bitte warten ..
Mitglied: halo7one
26.06.2008 um 18:29 Uhr
Also vielen Dank an euch,
das Problem ist soweit gelöst (wieder eines weniger

MfG,
halo7one
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Batch for f Befehl erkennt doppelte Zeichen als eines
gelöst Frage von 126594Batch & Shell3 Kommentare

Hallo zusammen. Ich versuche mich zur Zeit am Bearbeiten von Variablen in Batchdateien. Eigentlich bin ich schon ganz gut ...

Sicherheits-Tools
F-Prot for Windows Corporate mit Samba Share
gelöst Frage von sams15Sicherheits-Tools3 Kommentare

Hallo, suche eine gute Anleitung zu diesem Thema. Mein Vorhaben: Auf 3 MS-Windows (XP) Rechner, F-Prot For Windows Corporate ...

Batch & Shell
For f Skip Schleife soll txt files kopieren
gelöst Frage von BiffBaffBatch & Shell2 Kommentare

Hallo zusammen, ich habe schon in anderen Foren gelesen, dass die FOR /F Variante keine Wildcards enthaelt. Ich wuerde ...

Batch & Shell
Ausgabe der einzelnen Ergebnisse einer For-Schleife mit Schalter F
gelöst Frage von hipfzwirgelBatch & Shell11 Kommentare

Hallo Leute, besteht die Möglichkeit die Ergebnisse einer For-Schleife(Batch/CMD) in eine für jeden Durchgang erzeugte Variable zu speichern. Beispiel: ...

Neue Wissensbeiträge
Batch & Shell

Open Object Rexx: Eine mittlerweile fast vergessene Skriptsprache aus dem Mainframebereich

Information von Penny.Cilin vor 1 StundeBatch & Shell1 Kommentar

Ich kann mich noch sehr gut an diese Skriptsprache erinnern und nutze diese auch heute ab und an noch. ...

Humor (lol)

"gimme gimme gimme": Automatischer Test stolpert über Easter Egg im man-Tool

Information von Penny.Cilin vor 3 StundenHumor (lol)5 Kommentare

Interessant, was man so alles als Easter Egg implementiert. Ist schon wieder Ostern? "gimme gimme gimme": Automatischer Test stolpert ...

MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 18 StundenMikroTik RouterOS8 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 19 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Heiß diskutierte Inhalte
Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server17 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...

Linux
OpenSource Groupware
Frage von FA-jkaLinux13 Kommentare

Hallo, ich suche eine Groupware als Alternative zum Exchange. Wesentliche Aufgaben sind die Handhabung von E-Mails (persönliche und gemeinsam ...

Windows 10
Bitlocker nach Verschlüsselung nicht mehr aufrufbar!
gelöst Frage von alexlazaWindows 1013 Kommentare

Hallo, ich besitze ein HP ZBook 17 G4 mit einem Windows 10 Pro Betriebssystem. Bei diesem Problem handelt sich, ...