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

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, 13451 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
LAN, WAN, Wireless
gelöst 802.1x Authentifizierung - NPS - RADIUS MAC (4)

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

Windows 10
Windows 10: Version 1607 jetzt im Current Branch for Business

Link von Penny.Cilin zum Thema Windows 10 ...

Erkennung und -Abwehr
Hackers are holding San Francisco s light-rail system for ransom

Link von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...