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

Ausgedruckt am: 25.04.2024 um 02:04 Uhr

Mitglied: TK1987
Lösung TK1987 04.10.2022 aktualisiert um 09:10:12 Uhr
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.
Mitglied: FCU1966
FCU1966 04.10.2022 um 21:28:40 Uhr
Goto Top
Genau dass war es. Vielen Dank.