Vorhandene batch bearbeiten
hallo nochmal ich dau
hab eine batch aus dem internet gezogen die aus einer file einen ordner macht und die file in den ordner schiebt jetzt hab ich nur ein problem das mir im namen des ordners immer dateinamen drin steht mir reichen aber die ersten 3 stellen ich poste mal die batch vielleicht hat jemand ein tipp
[Edit Biber] geCodeformatiert. [/Edit]
hab eine batch aus dem internet gezogen die aus einer file einen ordner macht und die file in den ordner schiebt jetzt hab ich nur ein problem das mir im namen des ordners immer dateinamen drin steht mir reichen aber die ersten 3 stellen ich poste mal die batch vielleicht hat jemand ein tipp
@echo off
rem rekursiver Aufruf? (1.Parameter == /R)
if %1.==/R. goto rekursiv
rem ein Prameter vorhanden?
if %1.==. goto no_params
set src=%1
:param_
rem erster Prameter sollte der Ordner sein, wo's abgeht
if not exist %src%\* goto err_param
rem und nun für jede Datei innerhalb des Quellordners ...
rem dabei ist:
rem '%%i' die "For"-Variable
rem '%0' ist das script selbst
rem 1 '/R' die Markierung für den rekursiven Aufruf
rem 2 '%src%' der Quellordner
rem 3 '%%~fi' Laufwerk+Pfad+Name+Erweiterung der Datei
rem 4 '%%~dpsi' Laufwerk+Pfad+Name+Erweiterung als '8.3'
for %%i in (%src%\*.*) do call %0 /R "%src%" "%%~fi" %%~si
goto end_batch
rem --------------------------------------------------
:rekursiv
rem bin ich's selbst??? Ooops!
if %3.==%0. goto exit_batch
rem check %3 (Datei)
if not exist %3 goto err_R_Datei
rem "falschen" Ordner erstellen ...
if exist %4__\* goto err_R_Dummy
md %4__
rem ... Datei verschieben ...
move %3 %4__ >Nul
rem ... und "falschen" Ordner korrigieren...
move %4__ %3
goto exit_batch
rem --------------------------------------------------
:no_params
echo.
echo. kein Ordner angegeben...
echo. verwende aktuellen Ordner
set src=.
rem ... und Rücksprung
goto param_
rem echo. [Abbruch]
rem echo.
rem goto end_batch
:err_param
echo.
echo. Ordner "%1" scheint nicht zu existieren, kein Zugriff oder nix drin!
echo. [Abbruch]
echo.
goto end_batch
:err_R_Datei
echo. Kein Zugriff auf oder Datei "%3" existiert nicht!
echo. [skip...]
goto exit_batch
:err_R_Dummy
echo. Dummer Zufall...
echo. Dummy-Ordner "%4__" existiert bereits!
echo. [skip...]
goto exit_batch
rem --------------------------------------------------
:end_batch
rem falls noch irgendetwas zu sagen ist...
pause
:exit_batch
[Edit Biber] geCodeformatiert. [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 145903
Url: https://administrator.de/forum/vorhandene-batch-bearbeiten-145903.html
Ausgedruckt am: 22.04.2025 um 20:04 Uhr
5 Kommentare
Neuester Kommentar
Hallo joman78!
Soferne es mehrere Dateinamen mit den selben 3 Anfangsbuchstaben gibt: Sollen dann alle Dateien im selben Ordner landen?
Außerdem: Ist nur eine Ordnerebene zu berücksichtigen?
Bei zweimal "Ja" als Antwort sollte das so gehen:
Die beiden "
Grüße
bastla
Soferne es mehrere Dateinamen mit den selben 3 Anfangsbuchstaben gibt: Sollen dann alle Dateien im selben Ordner landen?
Außerdem: Ist nur eine Ordnerebene zu berücksichtigen?
Bei zweimal "Ja" als Antwort sollte das so gehen:
@echo off & setlocal
set "Ordner=D:\Dein Ordner"
pushd "%Ordner%"
for /f "delims=" %%i in ('dir /b /a-d') do set "Name=%%~ni" & call :ProcessFile "%%i"
popd
goto :eof
:ProcessFile
set "Abk=%Name:~,3%"
echo md "%Abk%" 2>nul
echo move %1 "%Abk%"
goto :eof
echo
" dienen dazu, den Ablauf zunächst nur zu simulieren - wenn Du sie entfernst, werden tatsächlich Ordner erstellt und die Dateien verschoben ...Grüße
bastla
Hallo jomain78!
- aber wenn es auch eine Datei "b67_2.123" gäbe: was sollte mit der passieren?
Grüße
bastla
P.S.: Falls alle Dateien nur mit jeweils 3 Zeichen vor und nach dem Punkt benannt sein sollten, ließe sich das Ganze noch etwas kürzer schreiben:
als Zeile 5; der Rest ab Zeile 7 könnte entfallen ...
also dier dateiname z.b lautet b67.123 dann ist der ordnername b67.123 und ich hätte gerne
als ordnername nur b67
Das glaube ich schon verstanden (und im Batch oben berücksichtigt) zu haben als ordnername nur b67
Grüße
bastla
P.S.: Falls alle Dateien nur mit jeweils 3 Zeichen vor und nach dem Punkt benannt sein sollten, ließe sich das Ganze noch etwas kürzer schreiben:
for /f %%i in ('dir /b /a-d') do (echo md %%~ni 2>nul & echo move %%i %%~ni)