Ordner erstellen mit gleichem Namen wie die Datei
Hallo.
Vorab, ich habe mich im Netz doof und dusslig gesucht, leider nichts passendes gefunden.
Nun zu meinem Problem.
Ich habe viele Dateien die ich alle in einen separaten Ordner mit gleichem Namen verschieben möchte. Mein Problem dabei ist, daß die Dateinamen zum Teil aus mehreren Worten bestehen und zwischen den Wörtern Leerzeichen existieren.
Alle Lösungsansätze die ich bisher fand, erstellen zwar Ordner, kopieren die Dateien auch in die erstellten Ordner nur der Name der erstellten Ordner wird nur bis zum ersten, Leerzeichen übernommen.
rem Anfang
@echo off
setlocal
rem srcdir ist das Quellverzeichnis, Bitte anpassen
set "srcdir=C:\Projekt\Bestand"
rem destdir ist das Zielverzeichnis, Bitte anpassen
set "destdir=C:\ProjektmitUnterordner"
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
Dies ist das Script, was ich gefunden habe aber wie geschrieben, wird der Name nur bis zum ersten Leerzeichen übernommen.
Vorab, ich habe mich im Netz doof und dusslig gesucht, leider nichts passendes gefunden.
Nun zu meinem Problem.
Ich habe viele Dateien die ich alle in einen separaten Ordner mit gleichem Namen verschieben möchte. Mein Problem dabei ist, daß die Dateinamen zum Teil aus mehreren Worten bestehen und zwischen den Wörtern Leerzeichen existieren.
Alle Lösungsansätze die ich bisher fand, erstellen zwar Ordner, kopieren die Dateien auch in die erstellten Ordner nur der Name der erstellten Ordner wird nur bis zum ersten, Leerzeichen übernommen.
rem Anfang
@echo off
setlocal
rem srcdir ist das Quellverzeichnis, Bitte anpassen
set "srcdir=C:\Projekt\Bestand"
rem destdir ist das Zielverzeichnis, Bitte anpassen
set "destdir=C:\ProjektmitUnterordner"
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
Dies ist das Script, was ich gefunden habe aber wie geschrieben, wird der Name nur bis zum ersten Leerzeichen übernommen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4140671046
Url: https://administrator.de/forum/ordner-erstellen-mit-gleichem-namen-wie-die-datei-4140671046.html
Ausgedruckt am: 08.04.2025 um 17:04 Uhr
2 Kommentare
Neuester Kommentar
Moin,
Allerdings ist es für dein Vorhaben ünnötig, den /f-Parameter der For-Schleife zu bemühen:
Gruß Thomas
PS: Bitte zukünftig Codetags verwenden.
"tokens=1,*"
das ist dein Fehler. Damit wird der Dateiname bis zum 1. Leerzeichen in %%i geschrieben und der Rest des Dateinamens in %%j. Richtig wäre hier: "tokens=*"Allerdings ist es für dein Vorhaben ünnötig, den /f-Parameter der For-Schleife zu bemühen:
@echo off
set "srcdir=C:\Projekt\Bestand"
set "destdir=C:\ProjektmitUnterordner"
for %%A in ("%srcdir%\*") do (
if not exist "%destdir%\%%~nA" mkdir "%destdir%\%%~nA"
move "%%~A" "%destdir%\%%~nA"
)
Gruß Thomas
PS: Bitte zukünftig Codetags verwenden.