BATCH für Dateipfad mit Separator
Hallo,
ich leider keine Erfahrung in der Batch - Programierung, benötige aber ein kleines Batch.
Ich benötige eine Batch - Datei mit der ich Dateipfade nicht unterereinander sodern hintereinander in eine Textdatei geschrieben werden.
Als Separator zwischen den Pfaden muss ein I stehen.
Mit einer einfachen Anweisung wie DIR /a /s >test.txt komme ich nich weiter.
Danke
Peter
ich leider keine Erfahrung in der Batch - Programierung, benötige aber ein kleines Batch.
Ich benötige eine Batch - Datei mit der ich Dateipfade nicht unterereinander sodern hintereinander in eine Textdatei geschrieben werden.
Als Separator zwischen den Pfaden muss ein I stehen.
Mit einer einfachen Anweisung wie DIR /a /s >test.txt komme ich nich weiter.
Danke
Peter
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 133247
Url: https://administrator.de/forum/batch-fuer-dateipfad-mit-separator-133247.html
Ausgedruckt am: 22.04.2025 um 13:04 Uhr
5 Kommentare
Neuester Kommentar
Moin PeterS71,
wenn ich dich richtig verstehe, dann holst du diese Ordnerliste mit dem DIR-Befehl nach der Mimik "alles unterhalb eines Startordners"?
eine mögliche Entsprechung im Batch wäre eine FOR /F-Anweisung auf genau dieses "DIR /s /a:d startverzeichnis";
eine Alternative eine wäre eine FOR /R /D-Anweisung.
Skizze (ungetestet)
Grüße
Biber
wenn ich dich richtig verstehe, dann holst du diese Ordnerliste mit dem DIR-Befehl nach der Mimik "alles unterhalb eines Startordners"?
eine mögliche Entsprechung im Batch wäre eine FOR /F-Anweisung auf genau dieses "DIR /s /a:d startverzeichnis";
eine Alternative eine wäre eine FOR /R /D-Anweisung.
Skizze (ungetestet)
@echo off & setlocal
FOR /R "x:\startdir" /D %%i in (*) do Call :AddThis "%%i;"
REM wenn das FOR-gelumpe fertig ist, dann sieht %thelongLine% so aus:
REM thelongLine=x:\startdir\pfad1;x:\startdir\pfad1\subpathX;......
REM und da will ich alle Semikolon durch das pipe-Symbol ersetzen
set "thelongline=%thelongline:;=^|%"
REM mit Caret maskiert nur, weil ich gleich ECHOen will - wäre sonst nicht nötig.
echo %thelongline%>neueTextdatei.txt
:: Ende des Haupt-Batches
goto :eof
~~~~~~
:AddThis Parameter1 ist ein Lw/Pfad in Anführungszeichen
Set theLongline=%theLongline%%~1
goto :eof
Grüße
Biber
Moin PeterS71,
ich habe deinen Codeschnipsel mal in Codetags gesetzt, damit ich wenigstens die gemeinte Zeilennummer angeben kann.
Was ich mit bloßem Auge sehe ist:
Bitte versuche es mit diesen Tipps (erstmal) allein, ein paar Klemmer rauszunehmen.
Den verbleibenden Rest machen wir dann gerne gemeinsam.
Grüße
Biber
ich habe deinen Codeschnipsel mal in Codetags gesetzt, damit ich wenigstens die gemeinte Zeilennummer angeben kann.
Was ich mit bloßem Auge sehe ist:
- Ergänze in Zeile 1 nach "@echo off" noch ein " & setlocal" [alle im Batch verwendeten Variablen werden NUR dort verwendet]
- Zeile 28 benutzt die falsche Variable %theLongline%
- es existiert 2x ein "Call-Block" AddThis... 1x ab Zeile 15 (der wird benutzt) ; 1x ab Zeile 33 (der wird nie benutzt)
- alles, was nun tatsächlich zum Hauptablauf des Batches gehört (z.B. die zweite FOR-Anweisung "Flurstücke" sollte natürlich auch vor die jetzige Zeile 12 "Ende des Hauptbatches"
Bitte versuche es mit diesen Tipps (erstmal) allein, ein paar Klemmer rauszunehmen.
Den verbleibenden Rest machen wir dann gerne gemeinsam.
Grüße
Biber