Top-Themen

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

Frage Entwicklung Batch & Shell

GELÖST

Zwischen Verzeichnis und Unterverzeichnis ein neues Verzeicchnis einfügen

Mitglied: combat

combat (Level 1) - Jetzt verbinden

06.04.2008, aktualisiert 07.04.2008, 3991 Aufrufe, 9 Kommentare

Hallo Community,

Ich habe folgendes Problem:

Ich möchte zwischen einem Verzeichnis und Unterverzeichnis ein neues Verzeichnis einfügen. Dies sollte aber für alle Verzeichnisse erstellt werden, die sich unter einem bestimmten Laufwerk oder ein anderes Verzeichnis befinden.

Beispiel:

C:\1001\xy_1\...
neues Verz. "image" einfügen
C:\1001\image\xy_1\...

nächste Verzeichnis suchen

C:\1002\xy_2\...
neues Verz. "image" einfügen
C:\1002\image\xy_2\...

Wenn ich es manuell machen würde könnte dies so bei mir aussehen
01.
cd 1001\               // ich fange mit dem ersten Verzeichnis an 
02.
c:\md image         // ich erstelle mir ein neues Verzeichnis 
03.
c:\1001\dir /b       // ich schau nach welche (außer des gerade erstellte) Verzeichnisse existieren z.B. xy_1 
04.
 
05.
c:\1001\move c:\1001\xy_1 c:\1001\image\   // verschiebe das Verzeichnis xy_1 (mit dem gesamten Inhalt) in das neue Verz. "image"
Sollte unter c:\1001\ weiter Verzeichnisse existieren z.B. xy_2 müsste ich dieses auch verschieben.
Als nächstes würde das nächste Verzeichnis in c:\ folgen (hier dann c:\2002\)

Das ganze sollte dann für mehrere tausende Verzeichnisse ausgeführt werden. Da dies nicht manuell machbar ist hoffe ich dass mir jemand bei diesem Problem helfen kann.
Wäre echt super!!!

Gruß combat
Mitglied: miniversum
06.04.2008 um 20:36 Uhr
Ungetestet köntest dus so versuchen:
01.
@echo off 
02.
set "zusatzverz=image" 
03.
set "rootpath=C:" 
04.
FOR /F "delims=" %%i in ('dir /B "%rootpath%"') do ( 
05.
md "%rootpath%\%%i\%zusatzverz%" 
06.
FOR /F "delims=" %%j in ('dir /B "%rootpath%\%%i"') do ( 
07.
if not "%%j" equ "%zusatzverz%" move "%rootpath%\%%j" "%rootpath%\%zusatzverz%" 
08.
09.
)

Edit: kleine diverse Verbesserungen
Bitte warten ..
Mitglied: bastla
06.04.2008 um 20:51 Uhr
@miniversum
Ob da wohl (abgesehen von Dateien) auch Verzeichnisse wie etwa "C:\Windows" mit erfasst würden?
@combat
Willkommen im Forum!

Kannst Du (im Hinblick auf die oben angesprochene Problematik) etwas genauer angeben, woran die zu bearbeitenden Ordner eigentlich zu erkennen sind?

Unter der Annahme, dass alle Ordnernamen mit "1" beginnen, könnte es zB so gehen:
01.
@echo off & setlocal 
02.
set "Neu=image" 
03.
 
04.
for /d %%i in ("C:\1*.*") do ( 
05.
	echo Bearbeite: %%i 
06.
	if not exist "%%i\%Neu%" echo md "%%i\%Neu%" 
07.
	for /d %%a in ("%%i\*.*") do ( 
08.
		if /i "%%~nxa" neq "%Neu%" echo move "%%a" "%%i\%Neu%" 
09.
10.
)
Das "echo" vor dem "md" bzw vor dem "move" sorgt dafür, dass das Erstellen des neuen Ordners und die Verschiebeaktion zunächst nur angezeigt wird - wenn Du beide entfernst, wird das Verschieben tatsächlich ausgeführt. Um das Ganze besser nachvollziehen zu können, solltest Du den Batch von der Kommandozeile starten.

Grüße
bastla

[Edit] "echo" auch vor dem "md" hinzugefügt. [/Edit]
Bitte warten ..
Mitglied: miniversum
06.04.2008 um 20:59 Uhr
@miniversum
Ob da wohl (abgesehen von Dateien) auch Verzeichnisse wie etwa "C:\Windows" mit erfasst würden?

Soweit hab ich ncith gedacht, wäre aber nur ne kleine Änderung die ich zugegebenermasen nicht bedacht hatte. Aber darum läuft es auch als "ungetestet".
Bitte warten ..
Mitglied: bastla
06.04.2008 um 21:03 Uhr
@miniversum
Da ist es dann schon wieder ein Vorteil, dass Du mit "dir /B" für %%j keinen vollständigen Pfad erhältst und daher das Verschieben ohnehin scheitert ...

Grüße
bastla
Bitte warten ..
Mitglied: miniversum
06.04.2008 um 21:14 Uhr
Jajetzt wo dus schreibst.. ich glaub ich mach da mal ein paar korrekturen oben....
Bitte warten ..
Mitglied: combat
06.04.2008 um 21:53 Uhr
Danke miniversum und bastla für eure Tipps.

Genau beschrieben sieht die Situation so aus:

Es gibt eine Bilddatenbank die ungefähr so aussieht

D:\Archiv\2001\01011200001\dir\bildnr_xy.jpg
D:\Archiv\2001\01011200001\dir\bildnr_xy1.jpg
D:\Archiv\2001\01011200001\dir\bildnr_xy2.jpg usw.

D:\Archiv\2001\01011200002\dir\bildnr_xy3.jpg
D:\Archiv\2001\01011200002\dir\bildnr_xy4.jpg usw.

jetzt wollte ich zwischen "C:\Archiv\2001\" und "01011200001\dir\bildnr_xy.jpg" einen Ordner einfügen der sich "image" nennt.
Beim nächsten Unterordner ("01011200002\dir\bildnr_xy.jpg") der nach "C:\Archiv\2001\" folgt möchte ich wiederum den Ordner "image " einfügen.

Nach der Fertigstellung sollten die Ordner so aussehen:
D:\Archiv\2001\image\01011200001\dir\bildnr_xy.jpg
D:\Archiv\2001\image\01011200001\dir\bildnr_xy1.jpg
D:\Archiv\2001\image\01011200001\dir\bildnr_xy2.jpg usw.

D:\Archiv\2001\image\01011200002\dir\bildnr_xy3.jpg
D:\Archiv\2001\image\01011200002\dir\bildnr_xy4.jpg usw.

Wie viele Ordner und wie sie alle heißen weiß ich nicht, aber es soll vor jedem Ordner der nach dem Jahrgang folgt (D:\Archiv\2001\) ein neuer Ordner eingefügt werden.
Dieses Skript würde ich dann für alle folgende Jahre verwenden (müsste dann nur das Jahr ändern von 2001 auf 2002 usw.)

Danke nochmals für eure hilfe
Gruß combat
Bitte warten ..
Mitglied: bastla
06.04.2008 um 23:03 Uhr
Hallo combat!

Wenn Du nur jeweils einen Unterordner von "D:\Archiv", also etwa "2001" bearbeiten willst, sollte das so gehen:
01.
@echo off & setlocal 
02.
set "Neu=image" 
03.
set "Basis=D:\Archiv" 
04.
 
05.
set /p "Jahr=Welches Jahr? " 
06.
if not exist "%Basis%\%Jahr%" echo %Jahr% nicht gefunden! & goto :eof 
07.
 
08.
if not exist "%Basis%\%Jahr%\%Neu%" echo md "%Basis%\%Jahr%\%Neu%" 
09.
for /d %%a in ("%Basis%\%Jahr%\*.*") do ( 
10.
	if /i "%%~nxa" neq "%Neu%" echo move "%%a" "%Basis%\%Jahr%\%Neu%" 
11.
)
Für das jeweilige "echo" vor dem "md" bzw dem "move" gilt wie oben angemerkt: Es lässt sich damit der Ablauf simulieren, da der Befehl nur angeschrieben, aber nicht ausgeführt wird.

Willst Du doch alle Jahre auf einmal bearbeiten, kannst Du meinen ersten geposteten Batch mit folgender Änderung verwenden: Die erste "for"-Zeile muss dann
01.
for /d %%i in ("D:\Archiv\2*.*") do (
lauten.

Grüße
bastla
Bitte warten ..
Mitglied: combat
07.04.2008 um 15:15 Uhr
Hallo bastla,

danke nochmals für deine Tipps, hat jetzt gut geklappt und gleichzeitig habe ich wieder etwas gelernt.

Danke

Gruß Combat
Bitte warten ..
Mitglied: bastla
07.04.2008 um 15:50 Uhr
Hallo combat!

Freut mich - so soll's auch sein.

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Unterverzeichnis für Unterverzeichnis via Batch-Datei durchsuchen
gelöst Frage von dhc-beaverBatch & Shell4 Kommentare

Hallo Forum. Obgleich es viele Werkzeuge gibt, um Bilder von 5MP-Handykameras kleiner zu machen, scheitert man an der Faulheit ...

Batch & Shell
Unterverzeichnis löschen
gelöst Frage von sanaitBatch & Shell4 Kommentare

Moin Moin, echo off rmdir /s /Q D:\Transfer\ diese Batch löscht ja das gesamte Verzeichnis inklusive des Ordners Transfer. ...

Batch & Shell
Unterverzeichnis zählen
gelöst Frage von karla123Batch & Shell20 Kommentare

Hallo liebes Forum, ich habe ein Problem und möchte Euch bitten mir zu helfen. Benötigt wird ein Batch mit ...

Batch & Shell
Verzeichnis und erstes Unterverzeichnis abfragen und in textfile schreiben per Batch
Frage von NajjooBatch & Shell

Hallo Zusammen Ich sollte bei der Arbeit einen Batch erstellen, welcher den Pfad des Ordners und des ersten Unterordners(oder ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 2 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 3 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 3 TagenSicherheit11 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall9 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen9 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...