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

Verwendung von Tabs in den DELIMS von FOR-Schleifen

Frage Entwicklung Batch & Shell

Mitglied: midnightautomatic

midnightautomatic (Level 1) - Jetzt verbinden

21.07.2007, aktualisiert 18:12 Uhr, 19024 Aufrufe, 8 Kommentare

Excel-Tabellen als TXT-Datei speichern und anschließend mit einer FOR-Schleife die Tabs entfernen (TXT-Datei komprimieren)

Gegeben ist die Datei "g.txt", die aus Excel gespeichert worden ist.
Der Inhalt sieht so aus:

Feld1<TAB>Feld2<TAB>Feld3

for /F "delims=<TAB> tokens=1-3" %%a in (g.txt) do echo "%%a%%b%%c >> b.txt

Das Ergebnis für "b.txt" muss so aussehen:

Feld1Feld2Feld3

Leider sieht es so aus:

F%b%c

Warum?

Kritisch ist der Tab als Delimeter, der weder ausgeschrieben als "<TAB>" noch als " " akzeptiert wird.
Das Weglassen des delims ist nicht möglich, da die Felder Leerzeichen beinhalten dürfen.
Mitglied: bastla
21.07.2007 um 11:18 Uhr
Hallo nostrakis!

Wenn Du dafür sorgst, dass ein "echtes" Tabzeichen als Delimiter verwendet wird, sollte es auch per Batch klappen. (Dass es natürlich viel sinnvoller wäre, beim Excel-Export eine "csv"-Datei zu erzeugen, muss ich wohl eigentlich nicht erwähnen ...)

Soferne Du einen Editor verwendest, der das nach "delims=" enthaltene <TAB> nicht in 4 oder 8 Leerzeichen umwandelt, sollte die folgende Schreibweise funktionieren:
01.
for /F "tokens=1-3 delims=	" %%a in (g.txt) do echo "%%a%%b%%c >> b.txt
Grüße
bastla
Bitte warten ..
Mitglied: midnightautomatic
21.07.2007 um 12:24 Uhr
Hi bastla!

Vielen Dank! Die DELIMS müssen tatsächlich hinter den TOKENS stehen, damit es mit den Tabs klappt. Ich hab außerdem ein Gänsefüßchen in der ECHO-Anweisung vergessen.

Grüßle

Alexander Nostrakis
Bitte warten ..
Mitglied: bastla
21.07.2007 um 13:37 Uhr
Hallo nostrakis!

Ich hab außerdem ein Gänsefüßchen in der ECHO-Anweisung vergessen.
... was sich allerdings nicht auf die Aufteilung ausgewirkt hat (und mir daher nicht aufgefallen war).

Dazu (dem/den Anführungszeichen, wie ich ganz unprosaisch dazu sage) vielleicht noch folgende Anmerkung: Falls einmal in der Datei Felder zwar durch Tabs getrennt, aber in Anführungszeichen eigeschlossen stehen, wärst Du mit der folgenden Schreibweise auf der sicher(er)en Seite:
01.
for /F "tokens=1-3 delims=    " %%a in (g.txt) do echo "%%~a%%~b%%~c">>b.txt
Grüße
bastla
Bitte warten ..
Mitglied: midnightautomatic
21.07.2007 um 14:41 Uhr
Ohne Tilde klappt es eigentlich auch. Der Ausdruck schließt aber vor dem Anführungszeichen mit einem DELIM ab:
"Feld1Feld2 "
Am Ende steht ein Tab.
Schade.
Gruß
Alexander Nostrakis
Bitte warten ..
Mitglied: bastla
21.07.2007 um 15:41 Uhr
Hallo nostrakis!

Die Tilde war, wie erwähnt, für den Fall gedacht, dass einmal Felder unter Anführungszeichen stünden (und wenn das - derzeit - nicht der Fall ist, schadet sie zumindest auch nicht).

Der Ausdruck schließt aber vor dem Anführungszeichen mit einem DELIM ab: "Feld1Feld2 "
Am Ende steht ein Tab.
Wenn Du damit eine Zeile der Ausgabe beschreibst, kann ich das nicht nachvollziehen. Delimiter werden bei der Zerlegung mit "for" nicht weitergegeben, also woher sollte der Tab kommen?

Auch wenn nur 2 Felder in einer Eingabezeile stünden (und konsequenter Weise dahinter noch ein Tab), wäre das Ergebnis einfach, dass %%c keinen Inhalt hätte.

Bei meinen Tests unter Verwendung von
01.
for /F "tokens=1-3 delims=	" %%a in (g.txt) do echo "%%~a%%~b%%~c">>b.txt
mit folgender "g.txt" (beachte die eingestreuten zusätzlichen Tabs ab der 2. Zeile):
01.
Feld1	Feld 2	Feld Nr. 3	Feld 4 
02.
"Feld5"	"Feld Nr. 6"	 
03.
Feld 7		"Feld Nr. 8" 
04.
		Feld 9	Feld10	Feld 11	"Feld Nr. 12" 
05.
				Feld 13			"Feld Nr. 14"		Feld15		"Feld16" 
06.
					
erhalte ich folgende "b.txt":
01.
"Feld1Feld 2Feld Nr. 3" 
02.
"Feld5Feld Nr. 6" 
03.
"Feld 7Feld Nr. 8" 
04.
"Feld 9Feld10Feld 11" 
05.
"Feld 13Feld Nr. 14Feld15" 
06.
 
Zu beachten ist eigentlich nur, dass Tabs am Beginn einer Zeile ignoriert und mehrere aufeinander folgende Tabs nur als ein Delimiter interpretiert werden - ausgegeben wird aber trotzdem kein Tab. Dies lässt sich auch einfach nachvollziehen, wenn die Tabs zb durch ";" (natürlich auch als Delimiter in der "for"-Schleife) ersetzt werden.

Grüße
bastla
Bitte warten ..
Mitglied: midnightautomatic
21.07.2007 um 16:21 Uhr
Wenn Du damit eine Zeile der Ausgabe beschreibst, kann ich das nicht nachvollziehen.
Delimiter werden bei der Zerlegung mit "for" nicht weitergegeben, also woher sollte der Tab
kommen?

"g.txt" hat folgenden Inhalt:

Feld1 Feld2 Feld3

Die relevante Zeile in meiner Batch:

for /F "tokens=1-3 delims= " %%a in (g.txt) do echo "%%a %%b %%c" >> b.txt

"b.txt" sieht leider so aus:

"Feld1 Feld2 Feld3 "

Der Tab ist da.

Grüße

Alexander Nostrakis
Bitte warten ..
Mitglied: bastla
21.07.2007 um 17:36 Uhr
Hallo nostrakis!

So wie Deine Batchzeile bei mir ankommt, stehen nach "delims=" 4 Leerzeichen, anstelle eines einzelnen ASCII-Zeichens Code 9 = Tab, und zwischen %%a und %%b und %%c jeweils ein weiteres Leerzeichen. Außerdem wird auch das Leerzeichen vor >> ausgegeben (nach dem schließenden Anführungszeichen).

Auch beim Ergebnis sehe ich nach Feld3 nur zwei Leerzeichen (was allerdings nachvollziehbar ist, da mangels eines Leerzeichens die gesamte Zeile als %%a eingelesen und wieder ausgegeben wird und da es kein %%b und %%c gibt, werden nur die Leerzeichen zwischen %%a und %%b sowie zwischen %%b und %%c geschrieben) ...

Benutze bitte daher zum Posten von Textdateien und natürlich besonders Code < code> und < /code> (ohne Leerstellen)!

Welchen Editor verwendest Du übrigens?

Grüße
bastla
Bitte warten ..
Mitglied: midnightautomatic
21.07.2007 um 18:12 Uhr
Hallo bastla!

Das Problem waren tatsächlich Blanks, die ich für Tabs gehalten habe.
Verwendet habe ich Notepad.

Grüße

Alexander Nostrakis
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Verwendung von "set" in For-Schleife funktioniert nicht
gelöst Frage von rkrausbyBatch & Shell2 Kommentare

Hallo zusammen. Ich habe ein kleines Problem beim erstellen einer Abfrage. Das Hauptproblem liegt darin dass ich innerhalb einer ...

Batch & Shell
Batch Schleife als FOR-SCHLEIFE
gelöst Frage von mp2711Batch & Shell2 Kommentare

Mit den FOR-Schleifen habe ich mich leider bislang zu selten auseinander gesetzt, aber da ich sonst gerade nicht weiter ...

Batch & Shell
FOR Schleife mit LOOP und nachfolgender FOR Schleife
gelöst Frage von miczarBatch & Shell6 Kommentare

Hallo zusammen, ich habe ein Problem mit einem Batchfile. Situation: im Netzwerk ist kein WINS mehr vorhanden und so ...

Batch & Shell
FOR Schleife läuft nicht
gelöst Frage von sugramBatch & Shell4 Kommentare

Hallo Ich glaube ich sehe den Wald vor lauter Bäumen nicht. Aber ich bekomme die FOR Schleife nicht zum ...

Neue Wissensbeiträge
Windows 10

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

Tipp von kgborn vor 12 StundenWindows 101 Kommentar

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 13 StundenSicherheits-Tools

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

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.