joman78
Goto Top

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

@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]

Content-Key: 145903

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

Printed on: April 25, 2024 at 00:04 o'clock

Member: bastla
bastla Jun 29, 2010 at 16:57:03 (UTC)
Goto Top
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:
@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
Die beiden "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
Member: joman78
joman78 Jun 29, 2010 at 17:17:04 (UTC)
Goto Top
also dier dateiname z.b lautet b67.123 dann ist der ordnername b67.123 und ich hätte gerne
als ordnername nur b67
Member: bastla
bastla Jun 29, 2010 at 17:22:41 (UTC)
Goto Top
Hallo jomain78!
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 face-wink - 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:
for /f %%i in ('dir /b /a-d') do (echo md %%~ni 2>nul & echo move %%i %%~ni)
als Zeile 5; der Rest ab Zeile 7 könnte entfallen ...
Member: joman78
joman78 Jun 29, 2010 at 17:26:10 (UTC)
Goto Top
der name lautet immer von der file b67.xxx nur die ersten drei ändern sich die hinteren bleiben immer gleich
Member: joman78
joman78 Jun 29, 2010 at 17:42:12 (UTC)
Goto Top
bastla,

du bist mein held wenn du mal in stuttgart bist ruf an das bier geht auf mich

danke danke