fcu1966
Goto Top

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.

Content-Key: 4140671046

Url: https://administrator.de/contentid/4140671046

Printed on: April 26, 2024 at 21:04 o'clock

Member: TK1987
Solution TK1987 Oct 04, 2022 updated at 07:10:12 (UTC)
Goto Top
Moin,

"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.
Member: FCU1966
FCU1966 Oct 04, 2022 at 19:28:40 (UTC)
Goto Top
Genau dass war es. Vielen Dank.