Dateien automatisch in Ordner kopieren via Batch
Hallo ihr Lieben,
ich habe diesen Batchcode gefunden und er macht nahezu das, was ich benötige. Es existieren Word-Dateien, die mit einer kleinen Wortgruppe in Klammern beginnen bspw.: (Hallo wie gehts)Test1.docx. Das Programm soll nun einen Ordner erstellen, dessen Name aus dem Inhalt der Klammer (aber ohne Klammer) besteht und genau diese Dateien werden dann auch in den entsprechenden Ordner kopiert. Der Ordner hieße dann also "Hallo wie gehts".
Der folgende Code macht alles aber nur bis zum ersten Leerzeichen also "(Hallo". Kann mir jemand den Code so umstellen, dass er so läuft, wie ich es mir wünsche? Meine Programmierkenntnisse in diesem Bereich sind quasi nicht existent.^^
Vielen Dank und liebe Grüße
ich habe diesen Batchcode gefunden und er macht nahezu das, was ich benötige. Es existieren Word-Dateien, die mit einer kleinen Wortgruppe in Klammern beginnen bspw.: (Hallo wie gehts)Test1.docx. Das Programm soll nun einen Ordner erstellen, dessen Name aus dem Inhalt der Klammer (aber ohne Klammer) besteht und genau diese Dateien werden dann auch in den entsprechenden Ordner kopiert. Der Ordner hieße dann also "Hallo wie gehts".
Der folgende Code macht alles aber nur bis zum ersten Leerzeichen also "(Hallo". Kann mir jemand den Code so umstellen, dass er so läuft, wie ich es mir wünsche? Meine Programmierkenntnisse in diesem Bereich sind quasi nicht existent.^^
Vielen Dank und liebe Grüße
rem Anfang
@echo off
setlocal
rem srcdir ist das Quellverzeichnis, Bitte anpassen
set "srcdir=C:\Users\XXX"
rem destdir ist das Zielverzeichnis, Bitte anpassen
set "destdir=C:\Users\XXX\Desktop\Neuer Ordner (2)"
for /f "tokens=1,*" %%i in ('dir "%srcdir%" /b /-p /a:-d /o:gne') do (
if not exist "%destdir%\(%%i(" md "%destdir%\(%%i)"
move "%srcdir%\%%i %%j" "%destdir%\(%%i)"
echo "%destdir%\(%%i)\%%j"
echo.
)
endlocal
rem Ende
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1417742928
Url: https://administrator.de/contentid/1417742928
Ausgedruckt am: 24.11.2024 um 05:11 Uhr
4 Kommentare
Neuester Kommentar
for /f "tokens=1,*" %%i in (...
Teste ...
for /f "delims=" %%i in (...
EDIT:
Ah, die Zeichenfolge in Klammern soll %%i zugewiesen werden.
for /f "tokens=1,*delims=()" %%i in ('dir "%srcdir%" /b /-p /a:-d /o:gne') do for /f "tokens=*" %%k in ("%%j") do (
Steffen
OK, sagen wir der Dateiname ist
dann bekommst du
in %%i (ohne Klammern, da die als Delimiters aus dem String fliegen)
in %%j (noch mit vorangestelltem Leerzeichen)
in %%k (ohne Leerzeichen am Anfang)
Heißt, dort wo du die Klammern um %%i im Nachgang wieder brauchst (z.B. wenn du den ursprünglichen Dateiname für MOVE wieder zusammenbaust), must du sie wieder hinzufügen. Dort wo du sie nicht brauchst, lässt du sie weg, da %%i keine Klammern enthält.
Steffen
(aaa bbb) ccc ddd.ext
aaa bbb
ccc ddd.ext
ccc ddd.ext
Heißt, dort wo du die Klammern um %%i im Nachgang wieder brauchst (z.B. wenn du den ursprünglichen Dateiname für MOVE wieder zusammenbaust), must du sie wieder hinzufügen. Dort wo du sie nicht brauchst, lässt du sie weg, da %%i keine Klammern enthält.
Steffen