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-Key: 3030191231

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

Printed on: April 26, 2024 at 10:04 o'clock

Member: TK1987
TK1987 Jun 09, 2022 at 12:56:27 (UTC)
Goto Top
Moin,

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

Gruß Thomas
Member: rudelhudel
rudelhudel Jun 09, 2022 at 13:02:13 (UTC)
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.
Member: TK1987
TK1987 Jun 09, 2022 updated at 13:19:40 (UTC)
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
@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
@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
Mitglied: 3016726741
3016726741 Jun 09, 2022 at 14:00:38 (UTC)
Goto Top
Das ist mit PowerShell deutlich einfacher...
Member: rudelhudel
rudelhudel Jun 09, 2022 at 14:04:12 (UTC)
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.