Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 11.12.2010 um 22:54:26 Uhr
hallo, ich versuche gerade verzweifelt ein befehl zusammenzuzimmern
Na dann verschieb ich dich mal von "Windows-oder-wie-es-heisst" nach "Batch & Shell".
Wer schickt denn immer diese Verzweifelten in unser Forum?
GELÖST

(CMD) verzeichnis auflösen

Frage Entwicklung Batch & Shell

Mitglied: Mik.c.OS

Mik.c.OS (Level 1) - Jetzt verbinden

11.12.2010, aktualisiert 22:54 Uhr, 6617 Aufrufe, 6 Kommentare

hallo, ich versuche gerade verzweifelt ein befehl zusammenzuzimmern

es soll alle dateien & unterverzeichnisse eine ebene höhr verschieben
und dann das verzeichnis entfernen

ich habe das ganze schon mit robocopy bewerkstelligen können
robocopy "%~1" "%~1\.." /E /move

das problem:
robocopy verschiebt nicht wirklich sondern kopiert und köscht dann

da meine dateien auf dem selben volume nur eine ebene höhr versoben werden soll
und das z.t. gigabyte weise, ist es schon eine ziehmliche zeitverschwendung

es gibt ja noch den befehl move
das problem mit move ist, das es keine unterverzeichnisse verarbeitet

wenn man versuch das ganze in eine FOR-schleife zu packen gibt es schon wieder ein problem
denn wenn ich eine verzeichnisliste anvertigen will, müsste sie relative-pfade erzeugen,
da 1# das script schön dynamisch sein soll und 2# die ordnerstruktur gewart bleiben soll

ich habe noch kein weg gefunden wie ich den pfad %cd% (arbeitsverzeichnis) in %1 wegkürzen kann

also nochmal zurrück zum anfang
ich suche eine möglichkeit alle dateien/verzeichnisse mit struktur eine ebene höhr zu verschieben
welcher schneller arbeitet als robocopy (echtes moving)

[windows 7 ultimate x64]

p.s.
ich versuche es möglichst erstmal mit windows eigenen "on-board" werkzeugen zu lösen...

falls jemand ein grund von mir verlangt, dem sei gesagt:
sieht es als ein lernprozess um die grenzen von windows zu durchbrechen :P
Mitglied: bastla
11.12.2010 um 22:33 Uhr
Hallo Mik.c.OS!
das problem mit move ist, das es keine unterverzeichnisse verarbeitet
Würde ich der Gerüchteküche zuordnen ...

Soll demnach das derzeitige "Start"-Verzeichnis der Struktur aufgelassen werden? Wenn ja, würde ich das (völlig ungetestet) so versuchen:
01.
pushd %1 
02.
for /f "delims=" %%i in ('dir /a /b') do move "%%i" .. 
03.
popd 
04.
rd %1
Achtung: In einem Batch überschreibt "move" ohne Rückfrage (daher vielleicht noch ein "if not exist" ergänzen)!

Das "rd" hat übrigens absichtlich kein "/s /q" - falls trotz des "/a" beim "dir" nicht alle Dateien / Verzeichnisse "erwischt" worden sein sollten ...

Grüße
bastla
Bitte warten ..
Mitglied: Mik.c.OS
11.12.2010 um 23:34 Uhr
wow. klappt

erklär mir bitte mal das
hat das wasmit "pushd" & "popd " zu tun? warum nicht ohne?

[edit:]
hab mir mal das ganze etwas nähr angeschaut
ergebnis:
die codezeile:
for /f "delims=" %i in ('dir "%~1" /a /b') do move "%i" ..
reicht völlig aus

warum ich FOR nicht weiter verfolgt habe lag an der tatsache,
dass move allein keine "%dir%\*" unterverzeichnisse unterstützt
und dir alleine keine relativen pfadnahmen erzeugte

dabei liefert "dir /a" alles was ich gebraucht hätte...

move kann ja doch unterverzeichnisse mitkopieren, indem man das stammverzeichnis kopiert,
will man aber nur den inhalt mit wildcards * kopieren, so klappt es nicht

aber zugegeben ist move blöd programiert,
mit einer besseren wildcard unterstützung währe einiges leichter und man könnte auf for-schleifen verzichten...

ich sehe so viel design fehler in den cmd-tools von windows, einige sind z.t. antik
warum die nicht mal repariert werden... *kotz*

[p.p.s.:]
übrigens habe ich den ganzen spaß auch mit cmd/powershell umsetzen können
powershell move-item -path \"%drop%\*\" -destination \"%drop%\..\"
leider ein 'ab windows 7 only" bzw. extra nachinstallieren von powershell...
auf ' statt \" habe ich verzichtet, weil es probleme mit dateinamen verusacht, welche ' im dateinamen verwenden
ich frage mich ob das unter linux auch so ist, müsste mal einer testen
sonderzeichen in dateinamen ist immerwieder lustig :P
Bitte warten ..
Mitglied: bastla
11.12.2010 um 23:41 Uhr
Hallo Mik.c.OS!
hat das wasmit "pushd" & "popd " zu tun?
Das Wechseln in den Zielordner macht's nur einfacher - als Ziel des "move" genügt dann "..", ein relativer (bzw der übergeordnete) Pfad muss dann gar nicht ermittelt werden ...

Grüße
bastla
Bitte warten ..
Mitglied: Mik.c.OS
12.12.2010 um 00:04 Uhr
ich habe mein vorigen beitrag bearbeitet

"pushd" & "popd " werden nicht zwingend benötigt
in der codezeile hab ich den löschbefel mal weggelassen...
Bitte warten ..
Mitglied: bastla
12.12.2010 um 00:25 Uhr
Hallo Mik.c.OS!
for /f "delims=" %i in ('dir "%~1" /a /b') do move "%i" ..
reicht völlig aus
Mit nur einem "%"-Zeichen für die Schleifenvariable in einem Batch schon mal gar nicht (und wenn es kein Batch ist, ist "%~1" leer, womit wir wieder bei meinem Ansatz oben wären), und ansonsten auch nur, wenn Du aus dem entsprechenden Verzeichnis startest (dann wiederum ist "%~1" auch unnötig und es braucht natürlich auch kein "pushd", um in dieses Verzeichnis zu wechseln) ...

Wenn der Batch tatsächlich allgemein verwendbar (und von einem beliebigen Pfad aus startbar) sein soll, müsstest Du komplette Pfade (auch für das Ziel, da sich ".." ohne Pfad davor auf das Verzeichnis, von dem aus gestartet wurde, bezieht) erzeugen, da ja "dir /b" nur Datei-/Verzeichnisnamen, aber (ohne "/s", und das wäre hier kontraproduktiv) keine vollständigen Pfade liefert:
for /f "delims=" %%i in ('dir "%~1" /a /b') do move "%~1\%%i" "%~1\.."
Grüße
bastla
Bitte warten ..
Mitglied: Mik.c.OS
12.12.2010 um 01:19 Uhr
hast schon recht, ich hätt das doppelte "%"-zeichen für diesen beitrag nicht wegkürzen dürfen.
das mit den pfaden ist gut zu wissen. thx

übrigens wenn man den ganzen spaß in den explorer inegrieren will,
dann kommt sowas dabei raus
cmd /c if 0==0 (for /f "delims=" %%i in ('dir "%V" /a /b') do move "%%i" ..) & cd .. & rd /s /q "%V" & explorer "%V\.."
%V deshalb weil es dieser regestryschlüssel ist (funktioniert glabe ich erst ab windows 7)
HKEY_CLASSES_ROOT\Directory\Background\shell\zz.SuspendDir\command

if 0==0 brauchte ich um den for befehl zu seperieren,
da der for befehl sonnst die "&"-kettenbefehle mit ausfürt
da der cmd prozess sich auch noch selbst im weg steht muss man mit cd .. das verzeichnis verlassen

mit einer verlinkten script.cmd währe es vielleicht einfacher gewesen, aber ich wollte halt ein "single"-befehl in der regestry... :P
ziel erreicht XD
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
CMD Verschlüsslung ( Batch ) (11)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Script zum Auflösen einer Ordnerstruktur und zurück gesucht (12)

Frage von websolutions zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...