icepick1661
Goto Top

Pfadliste aus TXT-Datei verarbeiten

Hallo,

ich möchte aus einer Pfadliste in einer TXT-Datei Zeile für Zeile lesen und jede einzelne Zeile in Laufwerk/Pfad/Datei trennen, diese dann jeweils einer Variablen zuweisen und mit diesen weiterarbeiten.

Trenner für 'delims=' sind z. Zt. Semikolons.

Ich krieg's als nach wie vor Newbee in Batch einfach nicht gebacken und ich finde auch keinen passenden Code, den man modifizieren könnte. Alternativen zur Batch möchte ich eher nicht.

Großer Dank für eure Hilfe!

Jürgen

Content-Key: 570701

Url: https://administrator.de/contentid/570701

Printed on: April 26, 2024 at 07:04 o'clock

Member: rubberman
rubberman May 09, 2020 updated at 21:37:49 (UTC)
Goto Top
Ich raffs nicht.

Laufwerk/Pfad/Datei

Trenner für 'delims=' sind z. Zt. Semikolons

Kannst du mal eine Zeile deiner Datei hier rein copy/pasten? Sind die Daten nun mit Slashes (oder eher wie üblich mit Backslashes) oder mit Semicolons getrennt?

Steffen
Member: c0d3.r3d
c0d3.r3d May 09, 2020 at 23:05:41 (UTC)
Goto Top
Ich glaube ich verstehe ungefähr was er möchte. Er hat z.B. folgende Zeile in seinem *.txt-Dokument:


D:\Daten\Verwaltung\123

Er möchte dies aufgelöst haben in eine Variable für:
- Laufwerk
- erster Unterordner
- zweiter Unterordner
- usw.

Als Trennzeichen wird z.B. das Semilkolon verwendet, allerdings wo dies nun als Trennzeichen gedacht ist, ist auch eine Frage. Um Zeilen abzutrennen, einzelne Pfade zu trennen? Ich könnte mir das wie in SQL für einen Befehl vorstellen, welcher vom nächsten mit einem Semikolon getrennt wird. Aber bei Ordner wäre es typischerweise der Backslash.
Member: icepick1661
icepick1661 May 10, 2020 at 09:34:01 (UTC)
Goto Top
Hallo,

danke für Eure Antworten. Ich habe es mittlerweile selbst gelöst und festgestellt, dass meine Frage letztlich ziemlich dämlich war.

Zur Aufklärung zuerst die Problemstellung ("c0d3.r3d (Level1)" hat Recht):

in einer TXT-Datei liegt eine Liste mit Dateipfaden, Menge n Zeilen. Ein Pfad besteht aus "Drive\Path\File" - um die mit einer For-Schleife zerlegen zu können, habe ich Semikolons als Trenner eingefügt. Also steht da z. B.:
"E:\;[Path]\;[File]", [Path]="[Folder]\[n Subfolders]; n nicht fix"

Das kriegte ich mit einer "For /F"-Schleife nicht zerlegt, ich bekam immer nur die Variable für das Laufwerk gefüllt.

Der Fehler: ich hatte die Variablen für die drei Tokens als "%%a", "%%k", "%%l" gesetzt - hätte ich sie sauber in alphabetischer Reihenfolge gesetzt, wäre mir manches "Das kann doch nicht..." erspart geblieben. So ist es, wenn man Tomaten auf den Augen hat.

Danke für eure Hilfsbereitschaft!

Jürgen
Mitglied: 144260
144260 May 10, 2020 updated at 12:41:38 (UTC)
Goto Top
in einer TXT-Datei liegt eine Liste mit Dateipfaden, Menge n Zeilen. Ein Pfad besteht aus "Drive\Path\File" - um die mit einer For-Schleife zerlegen zu können, habe ich Semikolons als Trenner eingefügt.
Das ist in einer FOR-Schleife bei Pfadangaben überflüssig, hier reicht es einfach die Parameter Extensions der FOR-Schleife zu nutzen ... somit ist das manuelle Trennen nicht nötig face-wink

@echo off
for /f "usebackq delims=" %%a in ("C:\Datei.txt") do (  
    echo Laufwerk: %%~da
    echo Pfad: %%~pa
    echo Datei: %%~nxa
)
Einfach mal for /? in die Konsole eintippen oder hier nachschlagen
https://ss64.com/nt/syntax-args.html

Alternativen zur Batch möchte ich eher nicht.
Kein Wunder das Deutschland immer mehr verkümmert... in den 80ern stehen geblieben.