Mehrere Ordnernamen auslesen und in eine Variable schreiben
Hallo zusammen,
ich versuche verzweifelt eine Lösung eines Problems zu finden, wie ich den Namen mehrere Ordner in eine Variable schreiben kann, um damit dann im späteren Verlauf des Batch Scripts zu arbeiten.
Mein Problem ist, dass die For-Schleife sich schon die Ordnernamen ausliest und in die Variable schreibt, aber immer die vorherige mit dem nachfolgenden Ordnernamen überschreibt, so dass der letzte Ordner immer in der Variable präsent ist.
Hat jemand eine Idee für das Lösen des Problems?
VG
Schmitho
ich versuche verzweifelt eine Lösung eines Problems zu finden, wie ich den Namen mehrere Ordner in eine Variable schreiben kann, um damit dann im späteren Verlauf des Batch Scripts zu arbeiten.
Mein Problem ist, dass die For-Schleife sich schon die Ordnernamen ausliest und in die Variable schreibt, aber immer die vorherige mit dem nachfolgenden Ordnernamen überschreibt, so dass der letzte Ordner immer in der Variable präsent ist.
REM Path common definitions
set DLETTER=C:
set BASE=%DLETTER%\DHL\tomcat\webapps\os\Schnittstellen\DSI\M78\
REM CustomerID definition
FOR /F %%g IN ('dir /b %BASE%') DO SET CLNUMBER=%%g
REM Copy source to target
set SOURCE=%BASE%\%CLNUMBER%\PDF
set TARGET=%DLETTER%\DHL\tomcat\webapps\os\clientfiles\M78\%CLNUMBER%\PDF
move /Y %SOURCE%\*.pdf %TARGET%\
Hat jemand eine Idee für das Lösen des Problems?
VG
Schmitho
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 304415
Url: https://administrator.de/forum/mehrere-ordnernamen-auslesen-und-in-eine-variable-schreiben-304415.html
Ausgedruckt am: 03.04.2025 um 04:04 Uhr
5 Kommentare
Neuester Kommentar
Hi,
das was du suchst / brauchst nennt sich Array.
Das ist Beispielsweise hier ganz nett erklärt.
Gruß Krämer
das was du suchst / brauchst nennt sich Array.
Das ist Beispielsweise hier ganz nett erklärt.
Gruß Krämer

@echo off
set DLETTER=C:
set "BASE=%DLETTER%\DHL\tomcat\webapps\os\Schnittstellen\DSI\M78"
FOR /F %%g IN ('dir /b /AD "%BASE%"') DO move "%BASE%\%%g\PDF\*.pdf" "%DLETTER%\DHL\tomcat\webapps\os\clientfiles\M78\%%g\PDF"\
@echo off & setlocal EnableDelayedExpansion
REM Path common definitions
set DLETTER=C:
set "BASE=%DLETTER%\DHL\tomcat\webapps\os\Schnittstellen\DSI\M78"
REM CustomerID definition
FOR /F %%g IN ('dir /b /AD "%BASE%"') DO (
SET "CLNUMBER=%%g"
REM Copy source to target
set "SOURCE=%BASE%\!CLNUMBER!\PDF"
set "TARGET=%DLETTER%\DHL\tomcat\webapps\os\clientfiles\M78\!CLNUMBER!\PDF"
move "!SOURCE!\*.pdf" "!TARGET!\"
)

Zitat von @schmitho:
Danke dafür, ich werde das am Montag mal auf der Arbeit ausprobieren!
Eine Frage hätte ich noch: In Zeile 4 hast du die Variable + Pfad mit Hochkommas versehen und in Zeile 7 die Variable aus Zeile 4 auch, ist quasi doppelt gemoppelt.
Das ist für den Fall das Leer oder Sonderzeichen im Pfad vorkommen, ist zwar jetzt nicht der Fall aber wenn sie da sind bist du gerüstetDanke dafür, ich werde das am Montag mal auf der Arbeit ausprobieren!
Eine Frage hätte ich noch: In Zeile 4 hast du die Variable + Pfad mit Hochkommas versehen und in Zeile 7 die Variable aus Zeile 4 auch, ist quasi doppelt gemoppelt.
Ist das ein Versehen, oder muß das so sein?
Nein das ist kein Versehen sondern Vorbeugung wenn Leer oder Sonderzeichen in der Variablen vorkommen.Wenn die Anführungszeichen vor der Variablen und am Ende des Wertes stehen landen diese nicht in der Variablen selber, sie stellen nur sicher das der komplette Wert in der Variablen landet, bei Sonderzeichen z.B.
Man kann diese auch weglassen, aber später bei der Verwendung sollte man immer Anführungszeichen um die Variable "%var%" setzen, denn man weiß ja nie wer die Variablen mal mit einem Pfad der Leerzeichen beinhaltet bestückt. Wäre das nämlich der Fall und du verwendest keine Anführungszeichen, würde der Move oder dir Befehl fehlschlagen!