CMD for Befehl gibt mir nicht das erwünschte Resultat

Mitglied: Berner

Berner (Level 1) - Jetzt verbinden

19.01.2021 um 00:31 Uhr, 631 Aufrufe, 10 Kommentare

Hallo
Ich habe eine Datei Text.txt mit mehreren Einträgen (Pfade mit Ordnernamen, generiert durch einen dir-Befehl), wobei in den Zeilen ein oder mehrere Space vorkommen können (Bsp.)
Ich bin Zeile eins
Ich bin Zeile zwei
Ich bin Zeile drei
...

Ziel: Ich wünsche in einer Variablen nur den Eintrag der gesamten ersten Zeile
Meine Versuche mit for /f ergeben entweder

- 3 X Ich for /f %%a IN ('more/e +0 ^<C:\batchfiles\text.txt') do ECHO %%a
- alle drei Zeilen for /f "tokens=*" %%a IN ('more/e +0 ^<C:\batchfiles\text.txt') do ECHO %%a
- alle drei Zeilen for /f "tokens=* delims= " %%a IN (C:\batchfiles\text.txt) do ECHO %%a
- alle drei Zeilen for /f "tokens=* delims=^J" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Line Feed)
- alle drei Zeilen for /f "tokens=* delims=^M" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Carriage Return)
- alle drei Zeilen for /f "tokens=* delims=\" %%a IN (C:\batchfiles\text.txt) do ECHO %%a (Zeilenumbruch)

Eigentlich möchte ich für delims CR oder LF einsetzen, weil die Anzahl Space unbekannt ist. DOS kennt aber den Befehl CHR(13) nicht

Kann mir jemand den for Befehl korrigieren oder einen anderen Lösungsweg vorschlagen? Danke.
Mitglied: Dr.Bit
19.01.2021 um 07:43 Uhr
Betriebsystem?

🖖
Bitte warten ..
Mitglied: Doskias
19.01.2021 um 07:53 Uhr
Moin

Zitat von @Berner:
Ziel: Ich wünsche in einer Variablen nur den Eintrag der gesamten ersten Zeile

Und was ist der "Tiefere Sinn" dahinter? Ich denke du wirst die Variable dann irgendwie weiter verwenden wollen. Die Frage ist wofür. Manchmal gibt es in Powershell Funktionen die man versucht in Batch umständlich zu erzeugen. Was ist das Ziel des großen ganzen?

Gruß
Doskias
Bitte warten ..
Mitglied: 147323
147323 (Level 1)
19.01.2021, aktualisiert um 12:44 Uhr
Ziel: Ich wünsche in einer Variablen nur den Eintrag der gesamten ersten Zeile
Na dann, Kinderspiel:
Gruß jokari
Bitte warten ..
Mitglied: Berner
19.01.2021 um 12:42 Uhr
Windows 10
Bitte warten ..
Mitglied: 147323
147323 (Level 1)
LÖSUNG 19.01.2021, aktualisiert um 12:49 Uhr
Wo is nu das Problem? Der Code in meinem obigen Post funktioniert problemlos ...
Bitte warten ..
Mitglied: Berner
19.01.2021 um 15:41 Uhr
Hallo Doskias
Es handelt sich um ein Löschprogramm für ORDNER, analog einem für DATEIEN, das ich schon seit anfangs Jahr in einem proprietären Netzwerk mit 9 PCs und einem Server einer Produktionsabteilung in Betrieb genommen habe.
Leider weisen die Pfade und Ordner meines Kunden meistens Leerschläge auf, ich selber z.B. verzichte völlig auf Leerschläge in Dateinamen und Order und setze dafür ein Underline ein. Aber mein Kunde will nun mal die Leerschläge...
Mit einem Loop werden Client für Client und zuletzt der Server nach dem zu löschenden Ordner gescannt.
In der Textdatei werden durch einen dir-Befehl alle Pfade eines gesuchten Ordners des ersten Clients eingetragen, pro Zeile einen. Der erste Eintrag der Datei dient mir als Quellpfad für einen robocopy-Befehl, der den Ordner samt Inhalt sicherheitshalber in einem geschützten Ordner des Servers ablegt und ein Flag setzt, damit im weiteren Verlauf des Programms dieser Ordner nicht mehr gesichert wird. Dann kommt der zweite Client dran.
Zum Verständnis ist anzumerken, dass jeden Morgen jeder Client beim Einschalten besagte Dateien und Ordner vom Server herunterladet, für alle Clients dieselben. Ein Löschen auf dem Server der Dateien oder Ordner genügt nicht, da besagte Dateien und Ordner in den letzten 10 Arbeitstagen automatisch als Sicherungen auf jedem Client vorliegt. Ein und derselbe Ordner kann also bis zu elf Mal auf dem PC vorliegen.
Bitte warten ..
Mitglied: Berner
19.01.2021 um 15:50 Uhr
Hallo jokari.
Vielen Dank für Deinen Vorschlag. Natürlich klapp er und gibt mir genau das gewünschte Resultat. Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden. Ohne Deine Hilfe würde ich jetzt noch im Netz nach Lösungen suchen.
Sorry, dass ich nicht sofort antworten konnte. Ich wollte ja allen drei antworten, wurde dann aber nach dem ersten Post arbeitshalber gezwungen die weiteren Kommentare später abzufassen.
Kannst Du mir usebackq kurz erklären, den Rest des Quellcodes ist mir bekannt.
Gruss Berner
Bitte warten ..
Mitglied: 147323
147323 (Level 1)
19.01.2021, aktualisiert um 16:07 Uhr
Zitat von @Berner:

Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden.

Einfach for /? in die Konsole eintippen und schon kannst du es nachlesen..
Kurz du kannst damit normale Anführungszeichen für die Pfadangabe im For Loop verwenden. Vor allem dafür gedacht wenn Leerzeichen im Pfad sind.
Bitte warten ..
Mitglied: Pjordorf
19.01.2021 um 16:05 Uhr
Hallo,

Zitat von @Berner:
Dass man usebackq im For-Befehl einsetzen kann habe ich im Netz gesehen, konnte aber nirgends dessen Nutzen finden. Ohne Deine Hilfe würde ich jetzt noch im Netz nach Lösungen suchen.
In ein Kommandozeilenfenster mal ein For /? eingetippelt. Dort ist dein Usebackq erläutert. Auch hier zu Lesen hilft...
https://ss64.com/nt/for_cmd.html
https://de.wikipedia.org/wiki/FOR_(Kommandozeilenbefehl)#Iteration_durch ...

Gruß,
Peter
Bitte warten ..
Mitglied: Berner
19.01.2021 um 17:07 Uhr
Vielen Dank jokari und Pjordorf für Eure Hilfe und Hinweise. Ist eine super Homepage! Schnell und hilfreich.
Nicolas aus der Schweiz, alias Berner
Bitte warten ..
Heiß diskutierte Inhalte
Linux
Installation Grammm Server
smeclntVor 1 TagFrageLinux13 Kommentare

Hallo zusammen, meine Linux Kenntnisse sind sehr rudimentär trotzdem suche ich eigentlich ständig nach einer Alternative zu MS Exchange. Bis jetzt gab es nichts ...

Switche und Hubs
Probleme im Netzwerk Switche teilweise nicht erreichbar
hukimanVor 9 StundenFrageSwitche und Hubs29 Kommentare

Guten Morgen, seit Monaten haben wir hier immer wieder Probleme mit dem Netzwerk, das Problem konnte ich leider aber noch immer nicht finden. Es ...

Erkennung und -Abwehr
Einer Malware auf der Spur. Benötige Sherlock Holmes!
streamVor 21 StundenFrageErkennung und -Abwehr7 Kommentare

Guten Abend Wenn ich meine Windows-10-Kiste starte, so gibt mir mein Router eine Meldung aus, dass eine bestimmte IP-Adresse wegen Bösartigkeit geblockt wurde. Auf ...

Windows 10
Windows 10 interes Mikro ohne Funktion
TPH125Vor 1 TagFrageWindows 1011 Kommentare

Hallo zusammen, Ich verzweifelt bald. Besitze einen Medion Akoya MD 97110. Habe Windows 10 installiert, seit dem funktioniert das inigrierte Mikrofon nicht mehr. Gerät ...

Batch & Shell
Tabellarische Ausgabe der Netzwerkschnittstellen
gelöst dysti99Vor 8 StundenFrageBatch & Shell18 Kommentare

Mit - ip a - werden ja die Netzwerkschnittstellen angezeigt. Ich möchte mit ein Batchscript folgende Ausgabe erreichen: 1 eth0 192.168.1.1 AD:13:67:56:14:D1 2 eth1 ...

Festplatten, SSD, Raid
(USB) Festplatten laut ?
TomEngelVor 1 TagFrageFestplatten, SSD, Raid6 Kommentare

Ich grüsse Sie Alle. Eine Frage eines engagierten Laien Habe mehrere 3,5 " Festplatte. Einige schon recht alt 8 Jahre, andere ca 2-3 jahre ...

Ubuntu
Mailserver Test Provider IP
gelöst it-blzVor 1 TagFrageUbuntu9 Kommentare

Hallo, ist es möglich einen "Mailserver" (Imap + smtp) in einer Virtual Box mit einer Provider IP (dynamisch - ist allerdings konstant) zu testen? ...

Linux Netzwerk
SAMBA FS Portfreigabe
Jannik2018Vor 23 StundenFrageLinux Netzwerk17 Kommentare

Hallo zusammen, ich habe eine Portfreigabe für meinen SAMBA Server mit Netzwerkfreigaben auf port 445 TCP eingerichtet allerdings wenn ich per DNS oder externer ...