Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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, 6763 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 ..
Ähnliche Inhalte
Batch & Shell
gelöst Programm über CMD starten (9)

Frage von Galawayne zum Thema Batch & Shell ...

Linux
CMD Kopiervorgang auf Windows von Linux Benutzerabfrage (6)

Frage von WinLiCLI zum Thema Linux ...

Batch & Shell
Domain auflösen per PowerShell (5)

Frage von WWW-KR zum Thema Batch & Shell ...

Windows Server
Hyper-V-Host NIC Team auflösen (1)

Frage von takvorian zum Thema Windows Server ...

Neue Wissensbeiträge
Ubuntu

Ubuntu 17.10 steht zum Download bereit

(3)

Information von Frank zum Thema Ubuntu ...

Datenschutz

Autofahrer-Pranger - Bewertungsportal illegal

(8)

Information von BassFishFox zum Thema Datenschutz ...

Windows 10

Neues Win10 Funktionsupdate verbuggt RemoteApp

(8)

Information von thomasreischer zum Thema Windows 10 ...

Microsoft

Die neuen RSAT-Tools für Win10 1709 sind da

(2)

Information von DerWoWusste zum Thema Microsoft ...

Heiß diskutierte Inhalte
Windows 10
Seekrank bei Windows 10 (18)

Frage von zauberer123 zum Thema Windows 10 ...

Windows 10
Windows 10 Fall Creators Update Fehler (14)

Frage von ZeroCool23 zum Thema Windows 10 ...

Router & Routing
gelöst Getrenntes Routing bei VoIP und Daten (12)

Frage von Hobbystern zum Thema Router & Routing ...