speziell nummerierte Ordner in andere nummerierte Ordner verschieben
<s>HIIIILFEEEEE!!!</s>--->[Edit] Nicht nötig bei uns. MfG Biber[/Edit]
ich brauch ganz dringend die Hilfe von jemandem der sich mit Batches auskennt, ich hab nämlich noch nie was damit gem8, bin also ein volln00b in diesem Bereich -.-
bin Azubi und soll ein Archiv erstellen, unter anderem müsste ich tausende Nummerierte Ordner (F1K1,F2K1, F3K1) in andere Ordner (Filiale_1, Filiale_2, Filiale_3) verschieben, wobei ich die letzteren Ordner erst erstellen müsste, wenn ich das alles per Hand machen muss sterbe ich an Hirntod!
ich habe auch schon ähnliche threads gefunden, aber da ich wie gesagt ein absoluter noob bin hab ichs nich hinbekommen -.-
beispiel Problemstellung
F1K1
F1K2
F1K3
F2K1
F2K3
F4K99
alle Ordner mit F1 (Filiale1) am anfang müssen in einen Ordner Filiale_1 abgelegt werden, also ist nur die Zahl nach dem F relevant, und dann halt dieses prinzip beibehalten, alle F2K... in Filiale_2 Ordner usw, (es geht nicht unbedingt im alphabet, damit meine ich dass es durchaus sein kann dass nach F3Kirgendwas F6Kirgendwas kommt, die dann in die Ordner Filiale_3 und Filiale_6 verschoben werden müssten (und vorher müssten wie schon gesagt die Ordner Filiale_3 und Filiale_6 erstellt werden)
also hier nochmal ne konkrete Bauanleitung für das was ich suche:
der batch muss einen ordner für jede verschiedene Zahl nach dem F bei z.B. F3K1 anlegen und dann alle F3K* Ordner in diesen Ordner (bei diesem beispiel wäre es der Ordner Filiale_3) verschieben, also würden bei dem batch ganz viele Filiale_* ordner erstellt werden und dann die F*K* Ordner geordnet darein verschoben werden ...
wäre nett wenn sich jemand erbarmen würde .... er kann dann von sich behaupten er hätte ein Leben gerettet ;)
uund es wäre auch net das ganze wenn möglich ein kleinwenig zu kommentieren, dann könnte ich das ganze bei gegebenheit auf andere sachen umändern, wäre sehr hilfreich ... dankeschööön
ich brauch ganz dringend die Hilfe von jemandem der sich mit Batches auskennt, ich hab nämlich noch nie was damit gem8, bin also ein volln00b in diesem Bereich -.-
bin Azubi und soll ein Archiv erstellen, unter anderem müsste ich tausende Nummerierte Ordner (F1K1,F2K1, F3K1) in andere Ordner (Filiale_1, Filiale_2, Filiale_3) verschieben, wobei ich die letzteren Ordner erst erstellen müsste, wenn ich das alles per Hand machen muss sterbe ich an Hirntod!
ich habe auch schon ähnliche threads gefunden, aber da ich wie gesagt ein absoluter noob bin hab ichs nich hinbekommen -.-
beispiel Problemstellung
F1K1
F1K2
F1K3
F2K1
F2K3
F4K99
alle Ordner mit F1 (Filiale1) am anfang müssen in einen Ordner Filiale_1 abgelegt werden, also ist nur die Zahl nach dem F relevant, und dann halt dieses prinzip beibehalten, alle F2K... in Filiale_2 Ordner usw, (es geht nicht unbedingt im alphabet, damit meine ich dass es durchaus sein kann dass nach F3Kirgendwas F6Kirgendwas kommt, die dann in die Ordner Filiale_3 und Filiale_6 verschoben werden müssten (und vorher müssten wie schon gesagt die Ordner Filiale_3 und Filiale_6 erstellt werden)
also hier nochmal ne konkrete Bauanleitung für das was ich suche:
der batch muss einen ordner für jede verschiedene Zahl nach dem F bei z.B. F3K1 anlegen und dann alle F3K* Ordner in diesen Ordner (bei diesem beispiel wäre es der Ordner Filiale_3) verschieben, also würden bei dem batch ganz viele Filiale_* ordner erstellt werden und dann die F*K* Ordner geordnet darein verschoben werden ...
wäre nett wenn sich jemand erbarmen würde .... er kann dann von sich behaupten er hätte ein Leben gerettet ;)
uund es wäre auch net das ganze wenn möglich ein kleinwenig zu kommentieren, dann könnte ich das ganze bei gegebenheit auf andere sachen umändern, wäre sehr hilfreich ... dankeschööön
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 26041
Url: https://administrator.de/forum/speziell-nummerierte-ordner-in-andere-nummerierte-ordner-verschieben-26041.html
Ausgedruckt am: 14.05.2025 um 19:05 Uhr
6 Kommentare
Neuester Kommentar
Hallo,
Wenn diese Ordner alle in einem übergeordneten Verzeichnis liegen, kannst Du das mit
dir /o:g /s /b Übergordnetes_Verzeichnis
machen. Also z.B.
snip
for /f "tokens=*" %%e in ('dir /o:g /s /b Übergordnetes_Verzeichnis') do call: fold_cop %%e
goto eof
:fold_cop
x=%1
if .==%x:~-4, 1% exit
set y=%x:~-3, 1%
If not exist Laufw:\Verzeichnispfad\Filiale_1 md Laufw:\Verzeichnispfad\Filiale_%y%
xcopy /y %1 Laufw:\Verzeichnispfad\Filiale_%y%>nul
goto eof
snip
In for /f ... listest Du alle Daten auf, wobei die Verzeichnis als erstes gelistet werden
In fold_cop wird als erstes über den " . " an viertletzter Stelle abgefragt ob es eine Datei ist.
Wenn das sowohl die viert- als auch die fünftletzte Stelle sein kann (z.B. html) mußt Du mit "find" arbeiten
echo %x%|find ".">nul
if not errorlevel 1 exit
Dann sind auch alle Verzeichnisse abgearbeitet und die Batch wird beendet
Für die Filiale ist ja nur die Ziffer hinter F zuständig, also die drittletzte Stelle. Kann diese auch 2-stellig sein, muß die Abfrage erweitert werden, z.B. mit
if not %x:~-4, 1%==F (
set y= %x:~-4, 2% else
set y=%x:~-3, 1%
)
Danach wird überprüft ob das Verzeichnis Filiale_%y% existiert und wenn nicht erstellt.
Und zum Schluß wird das gesamte Verzeichnis kopiert.
Ist ungetestet, sollte aber so stimmen.
MfG maneich
Wenn diese Ordner alle in einem übergeordneten Verzeichnis liegen, kannst Du das mit
dir /o:g /s /b Übergordnetes_Verzeichnis
machen. Also z.B.
snip
for /f "tokens=*" %%e in ('dir /o:g /s /b Übergordnetes_Verzeichnis') do call: fold_cop %%e
goto eof
:fold_cop
x=%1
if .==%x:~-4, 1% exit
set y=%x:~-3, 1%
If not exist Laufw:\Verzeichnispfad\Filiale_1 md Laufw:\Verzeichnispfad\Filiale_%y%
xcopy /y %1 Laufw:\Verzeichnispfad\Filiale_%y%>nul
goto eof
snip
In for /f ... listest Du alle Daten auf, wobei die Verzeichnis als erstes gelistet werden
In fold_cop wird als erstes über den " . " an viertletzter Stelle abgefragt ob es eine Datei ist.
Wenn das sowohl die viert- als auch die fünftletzte Stelle sein kann (z.B. html) mußt Du mit "find" arbeiten
echo %x%|find ".">nul
if not errorlevel 1 exit
Dann sind auch alle Verzeichnisse abgearbeitet und die Batch wird beendet
Für die Filiale ist ja nur die Ziffer hinter F zuständig, also die drittletzte Stelle. Kann diese auch 2-stellig sein, muß die Abfrage erweitert werden, z.B. mit
if not %x:~-4, 1%==F (
set y= %x:~-4, 2% else
set y=%x:~-3, 1%
)
Danach wird überprüft ob das Verzeichnis Filiale_%y% existiert und wenn nicht erstellt.
Und zum Schluß wird das gesamte Verzeichnis kopiert.
Ist ungetestet, sollte aber so stimmen.
MfG maneich
Moin, Zwiebelmax,
willkommen im Forum.
Zwei Fussnoten zur maneich's Lösung:
Tippfehler:
If not exist Laufw:\Verzeichnispfad\Filiale_%y% md Laufw:\Verzeichnispfad\Filiale_%y%
Tippfehler:
goto :eof
...
--->würde ich so formatieren (und hab ein überflüssiges Leerzeichen beim ersten "set y=..." entfernt):
if not [%x:~-4, 1%]==[F] set y=%x:~-4, 2%
) else (
set y=%x:~-3, 1%
)
Soll aber nur eine konstruktive Ergänzung sein.
Getestet hab ich es ebenso wenig wie maneich.
Grüße Biber
willkommen im Forum.
Zwei Fussnoten zur maneich's Lösung:
If not exist Laufw:\Verzeichnispfad\Filiale_1 md Laufw:\Verzeichnispfad\Filiale_%y%
xcopy /y %1 Laufw:\Verzeichnispfad\Filiale_%y%>nul
xcopy /y %1 Laufw:\Verzeichnispfad\Filiale_%y%>nul
If not exist Laufw:\Verzeichnispfad\Filiale_%y% md Laufw:\Verzeichnispfad\Filiale_%y%
goto eof
goto :eof
...
if not %x:~-4, 1%==F (
set y= %x:~-4, 2% else
set y=%x:~-3, 1%
)
set y= %x:~-4, 2% else
set y=%x:~-3, 1%
)
--->würde ich so formatieren (und hab ein überflüssiges Leerzeichen beim ersten "set y=..." entfernt):
if not [%x:~-4, 1%]==[F] set y=%x:~-4, 2%
) else (
set y=%x:~-3, 1%
)
Soll aber nur eine konstruktive Ergänzung sein.
Getestet hab ich es ebenso wenig wie maneich.
Grüße Biber
Hallo,
nun ja, ungetestet schleichen sich immer wieder Leichtsinnsfehler ein.
Aber mit dem MD ist es ja nicht getan, er will ja auch die Ordner F?K? da rein kopieren.
Da hier immer mehrere Ordner wie o.a. reinkopiert werden, muß der Ordner Filiale_? ja nur beim ersten mal erstellt werden. Insofern ist xcopy ja richtig, über den Parameter läßt sich diskutieren.
MfG maneich
nun ja, ungetestet schleichen sich immer wieder Leichtsinnsfehler ein.
Aber mit dem MD ist es ja nicht getan, er will ja auch die Ordner F?K? da rein kopieren.
Da hier immer mehrere Ordner wie o.a. reinkopiert werden, muß der Ordner Filiale_? ja nur beim ersten mal erstellt werden. Insofern ist xcopy ja richtig, über den Parameter läßt sich diskutieren.
MfG maneich
Na gut,
dann will ich auch mal meinen Lösungsansatz posten.
Das Szenario, so wie ich es verstanden habe:
Irgendwo existiert ein Quellverzeichnis, in dem die bisherigen Unterzeichnisse F1K7, F4K77 etc sind. Bei mir z.B.:
C:\WINDOWS\TEMP>dir f*
Verzeichnis von C:\WINDOWS\TEMP
19.02.2006 12:11 DIR f3k99
19.02.2006 12:11 DIR f1k2
19.02.2006 12:11 DIR f13k25
19.02.2006 12:12 DIR f2k77
Dann würde ich für diesen Pillepalle keinen Batch schreiben, sondern eine Zeile vom CMD-Prompt abfeuern:
[Das "@echo" vor dem xcopy sollte natürlich nach dem Test gelöscht werden.]
Wenn ich alle XCopy-Befehle, die in die Grütze gehen, in einer Log-Datei dokumentieren will, hänge ich noch ein..
dran.
Sollte der Xcopy-Befehl nicht dazu in der Lage sein, das Verzeichnis "Filiale_N" und das Unterverzeichnis "F1K2" in einem Rutsch anzulegen (hab ich nicht getestet), dann eben diese Zeile vorweg:
Wenn es partout ein Batch sein soll mit ein paar Doku-Zeilen:
My 2c
Biber
dann will ich auch mal meinen Lösungsansatz posten.
Das Szenario, so wie ich es verstanden habe:
Irgendwo existiert ein Quellverzeichnis, in dem die bisherigen Unterzeichnisse F1K7, F4K77 etc sind. Bei mir z.B.:
C:\WINDOWS\TEMP>dir f*
Verzeichnis von C:\WINDOWS\TEMP
19.02.2006 12:11 DIR f3k99
19.02.2006 12:11 DIR f1k2
19.02.2006 12:11 DIR f13k25
19.02.2006 12:12 DIR f2k77
Dann würde ich für diesen Pillepalle keinen Batch schreiben, sondern eine Zeile vom CMD-Prompt abfeuern:
C:\WINDOWS\TEMP>
@for /f %i in ('dir /b /a:d F*k*') do @For /f "delims=FfKk" %a in ("%i") do @echo xcopy %i\*.* z:\Filiale_%a\%i /s /e /i
xcopy f3k99\*.* z:\Filiale_3\f3k99 /s /e /i
xcopy f1k2\*.* z:\Filiale_1\f1k2 /s /e /i
xcopy f13k25\*.* z:\Filiale_13\f13k25 /s /e /i
xcopy f2k77\*.* z:\Filiale_2\f2k77 /s /e /i
Wenn ich alle XCopy-Befehle, die in die Grütze gehen, in einer Log-Datei dokumentieren will, hänge ich noch ein..
Sollte der Xcopy-Befehl nicht dazu in der Lage sein, das Verzeichnis "Filiale_N" und das Unterverzeichnis "F1K2" in einem Rutsch anzulegen (hab ich nicht getestet), dann eben diese Zeile vorweg:
@for /f %i in ('dir /b /a:d F*k*') do @For /f "delims=FfKk" %a in ("%i") do MD z:\Filiale_%a\%i
::----snipp CopyToNewFiliale.bat--------------
@Echo off & setlocal
Set "Q=C:\Windows\Temp" && Rem Q wie Quellverzeichnis
Set "Z=\\Server\Freigabexy\AlleFilialen" && Rem Z wie Zielverzeichnis
Set "Log=%temp%\Filialcopy.log" && mein Logfile, nur für Fehler
Pushd "%Q%"
for /f %%i in ('dir /b /a:d F*k*') do (
For /f "delims=FfKk" %%a in ("%%i") do (
xcopy %Q%\%%i\*.* %Z%\Filiale_%%a\%%i /s /e /i||echo Fehler beim Kopieren von %%i nach %%a\%%i>>%log%
))
Popd
:: --snapp -CopyToNewFiliale.bat--------( ungetestete Skizze)
Biber