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
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 133247
Url: https://administrator.de/contentid/133247
Printed on: April 19, 2024 at 18:04 o'clock
5 Comments
Latest comment
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