rudelhudel
Goto Top

Batch Unterordner move

Hallo,

ich habe folgendes Problem.

Ich habe hier Diverse Verzeichnisstrukturen, die ich jeweils verkürzen muss

Also zum Beispiel:

Hauptordner\1\Unterordner\file.xxx
Hauptordner\2\Unterordner\file.xxx
Hauptordner\3\Unterordner\file.xxx
Hauptordner\4\Unterordner\file.xxx


Dies konnte ich bisher durch diese Zeile lösen: for /f "tokens=1" %%f in ('dir /ad /b') do (move "%%f\Unterordner\*.*" "%%f\") & (rd "%%f\Unterordner\")


Jetzt habe ich aber ein Problem, dass nun einige Ordnerstrukturen unter der Ziffer auch anders is.. z.B:

Hauptordner\1\1\file.xxx
Hauptordner\2\2\file.xxx
Hauptordner\3\3\file.xxx
Hauptordner\4\4\file.xxx


Und schon geht das nicht mehr.


GIbt es hierfür eine simple Ergänzung, um einen beliebigen Unterordnernamen zu haben?


Danke im Voraus!

Content-ID: 3030191231

Url: https://administrator.de/forum/batch-unterordner-move-3030191231.html

Ausgedruckt am: 13.04.2025 um 05:04 Uhr

TK1987
TK1987 09.06.2022 um 14:56:27 Uhr
Goto Top
Moin,

die Dateien sollen einfach nur eine Ebene höher geschoben werden?
1
2
3
@echo off
set Hauptordner=C:\Test
for /R %%A in ("%Hauptordner%\*") do move "%%A" "%%~dpA..\"  

Gruß Thomas
rudelhudel
rudelhudel 09.06.2022 um 15:02:13 Uhr
Goto Top
Ja, aber mit unterschiedlich benannten Unterverzeichnissen und danach soll das jeweilige Verzeichnis noch gelöscht werden.


Das was ich oben bereits gepostet hab funktioniert perfekt, bis auf den Umstand, dass ich das Unterverzeichnis angeben muss. Hier brauche ich eine erneute Variable und da komme ich nicht weiter.
TK1987
TK1987 09.06.2022 aktualisiert um 15:19:40 Uhr
Goto Top
Zitat von @rudelhudel:
Ja, aber mit unterschiedlich benannten Unterverzeichnissen
genau das macht mein Code oben ja
und danach soll das jeweilige Verzeichnis noch gelöscht werden.
das würde ich im Anschluss machen
1
2
3
4
@echo off
set Hauptordner=C:\Test
for /R %%A in ("%Hauptordner%\*") do move "%%A" "%%~dpA..\"  
for /F "Delims=" %%A in ('dir /s /b /ad "%Hauptordner%\*"') do rd "%%A" 2>nul  

Alternativ kannst du natürlich auch die Schleifen verschachteln
1
2
3
4
5
6
7
8
@echo off
set Hauptordner=C:\Test
for /D %%A in ("%Hauptordner%\*") do (  
  for /R %%B in ("%%A\*.*") do (  
    move "%%B" "%%A\"  
    rd "%%~dpB" 2>nul  
  )
)

Gruß Thomas
3016726741
3016726741 09.06.2022 um 16:00:38 Uhr
Goto Top
Das ist mit PowerShell deutlich einfacher...
rudelhudel
rudelhudel 09.06.2022 um 16:04:12 Uhr
Goto Top
Also bei mir klappt das nicht.... Ich habe nun echo weggemacht und >nul auch


C:\Users\Windows\Downloads\!TESTAREA\ordnername>move2.bat

C:\Users\Windows\Downloads\!TESTAREA\ordnername>set Hauptordner=C:\Users\Windows\Downloads\!TESTAREA\ordnername

C:\Users\Windows\Downloads\!TESTAREA\ordnername>for /R %A in ("C:\Users\Windows\Downloads\!TESTAREA\ordnername\*") do move "%A" "%~dpA..\"

C:\Users\Windows\Downloads\!TESTAREA\ordnername>for /F "Delims=" %A in ('dir /s /b /ad "C:\Users\Windows\Downloads\!TESTAREA\ordnername\*"') do rd "%A"

C:\Users\Windows\Downloads\!TESTAREA\ordnername>rd "C:\Users\Windows\Downloads\!TESTAREA\ordnername\1"
Das Verzeichnis ist nicht leer.

C:\Users\Windows\Downloads\!TESTAREA\ordnername>rd "C:\Users\Windows\Downloads\!TESTAREA\ordnername\2"
Das Verzeichnis ist nicht leer.

C:\Users\Windows\Downloads\!TESTAREA\ordnername>rd "C:\Users\Windows\Downloads\!TESTAREA\ordnername\1\1"
Das Verzeichnis ist nicht leer.

C:\Users\Windows\Downloads\!TESTAREA\ordnername>rd "C:\Users\Windows\Downloads\!TESTAREA\ordnername\2\2"
Das Verzeichnis ist nicht leer.