Batch-datei gesucht um (Zwischen)-Ordner zu entfernen, Inhalte aber zu belassen
Hallo liebe Experten für Batch-files unter Win (7, 64bit),
Meine Problemstellung:
In meinem Workflow beim Importieren von Bilddaten und Katalogen habe ich häufig die Situation
dass ich nachträglich gerne einen überflüssigen Ordner aus der Hierarchie entfernen möchte.
Die Dateien und Ordner in dem überflüssigen Ordner sollten nach einer batch-aktion einfach einen "Stock höher" sein.
Das bräuchte ich:
OrdnerA
...datei 1
...unterordner_überflüssig
datei 2
unterunterordner1
datei 3
möglichst durch drag´n drop des "unterordner_überflüssig" auf batchfile umwandeln in:
OrdnerA
...datei 1
...datei 2
...unterunterordner1
datei3
Cool wäre auch das im Kontextmenü zu haben und mit Rechtsklick auslösen zu können,
aber da weiß ich schon gar nicht wie man das hinbekommt.
In einem Lösungsansatz auf Administrator.de vor 6 Jahren wurde ein sehr ähnliches Problem
schon genial gelöst (darum habe ich mich hoffnungsvoll hier angemeldet).
Ich habe im Netz ansonsten lange und vergeblich nach einer Lösung gesucht.
Ich beziehe mich auf diesen geschlossenen Beitrag:
Ordnerhierarchie auf eine Ebene reduzieren?
Das funktioniert zwar prima...aber es verschwinden leider sämtliche Unterhierarchien, ich möchte nur das
alle einen Stock höher rücken, also nur ein Ordner mittendrin verschwindet.
Ich nehme mal an, in Programmierer-Logik bedeutet das sowas wie:
Kopiere Inhalt aus dem angezeigten Ordner in den Übergeordneten und lösche dann den angezeigten Ordner?
Wär toll wenn jemand mir da genauso helfen könnte wie dem Fragesteller vor 6 Jahren geholfen wurde.
Meine Problemstellung:
In meinem Workflow beim Importieren von Bilddaten und Katalogen habe ich häufig die Situation
dass ich nachträglich gerne einen überflüssigen Ordner aus der Hierarchie entfernen möchte.
Die Dateien und Ordner in dem überflüssigen Ordner sollten nach einer batch-aktion einfach einen "Stock höher" sein.
Das bräuchte ich:
OrdnerA
...datei 1
...unterordner_überflüssig
datei 2
unterunterordner1
datei 3
möglichst durch drag´n drop des "unterordner_überflüssig" auf batchfile umwandeln in:
OrdnerA
...datei 1
...datei 2
...unterunterordner1
datei3
Cool wäre auch das im Kontextmenü zu haben und mit Rechtsklick auslösen zu können,
aber da weiß ich schon gar nicht wie man das hinbekommt.
In einem Lösungsansatz auf Administrator.de vor 6 Jahren wurde ein sehr ähnliches Problem
schon genial gelöst (darum habe ich mich hoffnungsvoll hier angemeldet).
Ich habe im Netz ansonsten lange und vergeblich nach einer Lösung gesucht.
Ich beziehe mich auf diesen geschlossenen Beitrag:
Ordnerhierarchie auf eine Ebene reduzieren?
Das funktioniert zwar prima...aber es verschwinden leider sämtliche Unterhierarchien, ich möchte nur das
alle einen Stock höher rücken, also nur ein Ordner mittendrin verschwindet.
Ich nehme mal an, in Programmierer-Logik bedeutet das sowas wie:
Kopiere Inhalt aus dem angezeigten Ordner in den Übergeordneten und lösche dann den angezeigten Ordner?
Wär toll wenn jemand mir da genauso helfen könnte wie dem Fragesteller vor 6 Jahren geholfen wurde.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 230125
Url: https://administrator.de/forum/batch-datei-gesucht-um-zwischen-ordner-zu-entfernen-inhalte-aber-zu-belassen-230125.html
Ausgedruckt am: 18.04.2025 um 01:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo bobbby und willkommen im Forum!
Im einfachsten Fall würde für das Verschieben schon ein Batch der Art
genügen - allerdings wäre eine Voraussetzung, dass es keine Namenskollisionen zwischen den Inhalten von "OrdnerA" und "unterordner_überflüssig" gibt ...
Grüße
bastla
Im einfachsten Fall würde für das Verschieben schon ein Batch der Art
@echo off & setlocal
if [%1]== goto :eof
pushd %1
for %%i in (*) do move "%%i" ..
popd
Grüße
bastla
Hallo bobbby!
Neuer Versuch:
Wenn es gleichnamige Dateien / Ordner gibt, werden sie nicht verschoben sondern bleiben im "überflüssigen" Ordner (der dann natürlich erhalten bleiben muss) ...
Grüße
bastla
Neuer Versuch:
@echo off & setlocal
if [%1]== goto :eof
pushd %1
for /f "delims=" %%i in ('dir /b/a') do if not exist "..\%%i" (move "%%i" ..) else (echo "%%i" bereits vorhanden!)
popd
rd %1 2>nul
pause
Grüße
bastla
Hallo bobbby!
Grüße
bastla
Kann ich die Bestätigungsmeldung abschalten?
Dazu würde es genügen, die Zeile 8 wegzulassen; damit aber die Ausgabe der ev bereits vorhandenen Dateien / Ordner trotzdem gelesen werden kann, vielleicht besser:@echo off & setlocal
if [%1]== goto :eof
set "P="
pushd %1
for /f "delims=" %%i in ('dir /b/a') do if not exist "..\%%i" (move "%%i" ..) else (echo "%%i" bereits vorhanden! & set "P=true")
popd
rd %1 2>nul
if defined P pause
Kann ich das Ganze irgendwie ins Kontextmenü (Rechtsklickmenü) bekommen?
Grüße
bastla