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

gelöst Löschvorgang automatisieren

Mitglied: Franzmann

Franzmann (Level 1) - Jetzt verbinden

12.10.2006, aktualisiert 08.01.2015, 4101 Aufrufe, 12 Kommentare

Hallo alle zusammen,
hoffe jemand weiß wie ich folgendes Problem realisieren kann.
Ich hab unter Windows einen Ordner Versionen der bsp. die
Unterordner 1.1, 1.2, 1.3, 1.4, 1.5 beinhaltet.

436b96362e69b05493730f4f8c8ff96a-bild - Klicke auf das Bild, um es zu vergrößern

Wie kann ich realisieren das mir per Skript alle Unterordner außer dem Aktuellsten, in diesem Fall 1.5, gelöscht werden ? Die 5 Unterordner sind vom Ursprung alle gleich alt, so dass man nicht nach dem Erstellungsdatum gehen kann.
Hoffe die Problematik wurde klar...
Greetz
Mitglied: Biber
12.10.2006 um 14:53 Uhr
Moin Franzmann,

angenommen, der Parent-Ordner der "Versions-Verzeichnisse" 1.1; 1.2; .... 1.28g; .... 3.9a, 4.00;.. heißt D:\Versionen
und die Namenskonvention für die Versionsverzeichnisse sei "?.*" [eine Stelle vor dem Punkt, beliebige Stellen danach], dann:

Am Prompt:
01.
>for /f "skip=1" %i in ('dir /b /Ad /o-n D:\Versionen\?.*') do @ECHO rd /s /q %i
Das "@ECHO" nach dem erfolgreichen Testen ersatzlos löschen.
Als Batch jeweils zwei %-Zeichen statt ein %-Zeichen.

Gruß
Biber
Bitte warten ..
Mitglied: Franzmann
12.10.2006 um 15:22 Uhr
Hey Biber,
danke für deine Hilfe !
Also der Test mit @ECHO klappt wunderbar,
doch sobald ich das @ECHO wegnehme spuckt er folgendes aus:
C:\>for /f "skip=1" %i in ('dir /b /Ad /o-n D:\temp\?.*') do rd /s /q %i

C:\>rd /s /q 1.6
Das System kann die angegebene Datei nicht finden.

C:\>rd /s /q 1.5
Das System kann die angegebene Datei nicht finden.

C:\>rd /s /q 1.4
Das System kann die angegebene Datei nicht finden.

C:\>rd /s /q 1.3
Das System kann die angegebene Datei nicht finden.

C:\>rd /s /q 1.2
Das System kann die angegebene Datei nicht finden.

C:\>rd /s /q 1.1
Das System kann die angegebene Datei nicht finden.

Weißt du warum ?
mfg
Bitte warten ..
Mitglied: Biber
12.10.2006 um 15:41 Uhr
Jepp, Franzmann,

sorry, die Pfadangabe "D:\Versionen" (bei mir) bzw. "D:\temp" (bei Dir) muss natürlich auch beim RD-Befehl angegeben werden.

for /f "skip=1" %i in ('dir /b /Ad /o-n D:\temp\?.*') do rd /s /q D:\Temp\%i

Gruß
Biber
Bitte warten ..
Mitglied: Franzmann
12.10.2006 um 17:51 Uhr
Yoh aller erste Sahne... läuft wie sau !!!
Ich danke dir...
mfg
Bitte warten ..
Mitglied: bastla
12.10.2006 um 20:04 Uhr
@Biber

Wie würdest Du bei zusätzlichen (vor dem Punkt) zweistelligen Versionsnummern vorgehen - mit If Exist ??.* alle Einstelligen weg und dann wie gehabt?

Grüße
bastla
Bitte warten ..
Mitglied: Franzmann
13.10.2006 um 09:11 Uhr
Habe ein neues Bild geuploadet ! 436b96362e69b05493730f4f8c8ff96a-bild - Klicke auf das Bild, um es zu vergrößern
In diesen Ordnern die man auf dem Bild sieht, sind jeweils die einzelnen Versionsordner enthalten. Wenn ich die Batch da jeweils reinkopiere klappt das auch tadellos !
Nur will ich die halt nicht überall vorab reinkopieren, durchlaufen lassen und dann wieder löschen. Ich würde gerne einen Zusatz in die Batch schreiben und zwar eine allgemeine Pfadangabe mit der er sämtlich Ordner der reihe nach abarbeitet.
Problematisch wird es auch bei den unterschiedlichen Namen der Ordner, wie hier beispielhaft mit den Pfeilen markiert wurde. Wie muss sowas aussehen ?
mfg

Franzmann
Bitte warten ..
Mitglied: bastla
13.10.2006 um 10:01 Uhr
Hallo Franzmann!

Wenn der oben dargestellte Ordner "D:\Temp" heißt, werden durch die folgende Variante in allen darin befindlichen Ordnern mit 4-stelligen Bezeichnungen die entsprechenden Unterordner gelöscht:

01.
REM Nur zur Sicherheit in den richtigen Ordner wechseln ...
02.
cd /d D:\Temp
03.
for /f %a in ('dir /b /Ad ????') do for /f "skip=1" %i in ('dir /b /Ad /o-n %a\?.*') do @echo rd /s /q %a\%i
Soll keine Namenskonvention (nur 4-stellig) für die erste Ordnerebene ("A000", ..., "d0002", ...) berücksichtigt werden, so kannst Du "????" durch "*.*" ersetzen und damit alle Ordner in D:\Temp behandeln.

HTH
bastla
Bitte warten ..
Mitglied: Franzmann
13.10.2006 um 10:49 Uhr
Ja subba... auch das läuft prima !
Ich danke dir bzw. euch Beiden !!!
Die Batch hat mir meinen Zeitaufwand um mehr als 3/4 gekürzt dank euch...
Schönes Weekend !!!
Bis dahin...

Franzmann
Bitte warten ..
Mitglied: Biber
13.10.2006 um 13:01 Uhr
Hm, bastla,

ist kniffelig, weil ich beim DIR-Befehl mit "?"-Jokerzeichen das "Feature" habe, dass ein "?" ja bedeutet:
"Ein beliebiges Zeichen oder keins".
Sprich: wenn ich folgende Verzeichnis-Struktur hätte [alles VOR dem Punkt soll numerisch sein]
01.
d:\temp\test\1.1
02.
d:\temp\test\1.2
03.
d:\temp\test\1.3
04.
d:\temp\test\1.4
05.
d:\temp\test\1.5
06.
d:\temp\test\9.4
07.
d:\temp\test\10.1
08.
d:\temp\test\10.2
09.
d:\temp\test\10.2.3.4
10.
d:\temp\test\10.5
11.
d:\temp\test\10.7
12.
d:\temp\test\10.7.1.3
[entspricht jetzt der Ausgabe von "dir /s /b d:\temp\test"]

--> dann würde ja die alphatische Sortierung des DIR-Befehls mit Wildcard "??" folgendes liefern:
[alle Beispiele am CMD-Prompt zur Demo]
01.
>dir /s /b /o-n d:\temp\test\??.*
02.
d:\temp\test\9.4
03.
d:\temp\test\10.7.1.3
04.
d:\temp\test\10.7
05.
d:\temp\test\10.5
06.
d:\temp\test\10.2.3.4
07.
d:\temp\test\10.2
08.
d:\temp\test\10.1
09.
d:\temp\test\1.5
10.
d:\temp\test\1.4
11.
d:\temp\test\1.3
12.
d:\temp\test\1.2
13.
d:\temp\test\1.1
Wenn also die Anforderung wäre, nur die höchsten n zweistelligen Version(en) zu löschen und auch einstellige "Versions-Verzwichnisse" vorhanden sein können, dann wäre die Mimik.

Fall a) Zweistellige sind vorhanden; alle einstelligen können deshalb ohnehin gelöscht werden:
Zuerst alle einstelligen Versionen löschen. Danach "zweistellige" behandeln:
01.
>for /f %i in ('dir /b /Ad /o-n d:\temp\test\?.*') do @rd /s /q d:\temp\test\%i
02.
>for /f "skip=1" %i in ('dir /b /Ad /o-n d:\temp\test\??.*') do @rd /s /q d:\temp\test\%i

Fall b) Nur zweistellige Verzeichnisse sollen behandelt werden; einstellige bleiben wie sie sind.

[Zwischenschritt zur Verdeutlichung]
01.
<b>>for /f "delims=. tokens=1,*" %i in ('dir /s /b /o-n d:\temp\test\??.*') do @if %~nxi GTR 9 @echo %i.%j</b>
02.
d:\temp\test\10.7.1.3
03.
d:\temp\test\10.7
04.
d:\temp\test\10.5
05.
d:\temp\test\10.2.3.4
06.
d:\temp\test\10.2
07.
d:\temp\test\10.1
Diesen Output lasse ich mal in einer "inneren" FOR /F-Anweisung erzeugen.
Denn ich will ja davon, von diesem Output, die (gemäß logischer Sortierung) erste Zeile überspringen.

01.
>for /f "skip=1" %x in ('<b>for /f "delims=. tokens=1,*" %i in ^('dir /s /b /o-n d:\temp\test\??.*'^) do @if %~nxi GTR 9 @echo %i.%j</b>') do @echo rd /s /q d:\temp\test\%x
02.
rd d:\temp\test\d:\temp\test\10.7
03.
rd d:\temp\test\d:\temp\test\10.5
04.
rd d:\temp\test\d:\temp\test\10.2.3.4
05.
rd d:\temp\test\d:\temp\test\10.2
06.
rd d:\temp\test\d:\temp\test\10.1
Gruß
Biber
Bitte warten ..
Mitglied: bastla
13.10.2006 um 13:50 Uhr
Hallo Biber!

Was machst Du eigentlich mit dem d:\temp\test\x.* in

01.
for /f %i in ('dir /b /Ad /o-n d:\temp\test\?.* d:\temp\test\x.*') do @rd /s /q d:\temp\test\%i
(und, ganz nebenbei, kann ich einen Teil eines "Schnipsels" beim Posten - innerhalb eines code-Blocks - mit einer Formatierung irgendwie hervorheben)?

Grüße
bastla
Bitte warten ..
Mitglied: Biber
13.10.2006 um 14:42 Uhr
@bastla

Das hatte ich vergessen zu löschen.. war vom Testen am CMD-Prompt übriggebileben:
01.
for /f %i in ('dir /b /Ad /o-n d:\temp\test\?.* <b>d:\temp\test\??.*</b>') do @rd /s /q d:\temp\test\%i
.. so hatte ich probiert, was das Ergebnis wäre, wenn ich erst die Ein-, dann die zweistelligen "Versions"-Verzeichnisse abarbeite. Käme aber nur Müll raus.

Dann hatte ich das "??.*" durch "x.*" ersetzt und vergessen.
Ich lösche es oben raus.

Die Formatierung fett zum Beispiel klappt auch innerhalb der Formatierung "Code".

Gruß
Biber
Bitte warten ..
Mitglied: bastla
13.10.2006 um 14:46 Uhr
@Biber

Na, da bin ich ja beruhigt ...

... und danke für den Formatierungstipp - hatte ich wohl an unpassender Stelle probiert ...

Grüße
bastla
Bitte warten ..
Neue Wissensbeiträge
Windows Mobile

Support für Windows Mobile endet im Dezember 2019

Information von transocean vor 14 StundenWindows Mobile

Moin, Microsoft empfiehlt als Alternative den Umstieg auf iOS oder Android, wie man hier lesen kann. Gruß Uwe

Internet

Kommentar: Bundesregierung erwägt Ausschluss von Huawei im 5G-Netz - Unsere Presse wird immer sensationsgieriger

Information von Frank vor 2 TagenInternet5 Kommentare

Hier mal wieder ein schönes Beispiel für fehlgeleiteten Journalismus und Politik zugleich. Da werden aus Gerüchten plötzlich Fakten, da ...

Windows 10

Netzwerk-Bug in allen Windows 10-Versionen durch Januar 2019-Updates

Information von kgborn vor 2 TagenWindows 101 Kommentar

Nur ein kurzer Hinweis für Admins, die Windows 10-Clients im Portfolio haben. Mit den Updates vom 8. Januar 2019 ...

Windows 10

Windows 10 V1809: Rollout ist gestartet - kommt per Windows Update

Information von kgborn vor 3 TagenWindows 102 Kommentare

Eine kurze Information für die Admins, die Windows 10 im Programm haben. Microsoft hat die letzte Baustelle (die Inkompatibilität ...

Heiß diskutierte Inhalte
TK-Netze & Geräte
TAPI auf einem Win2016Server installieren und einrichten
Frage von wstabelTK-Netze & Geräte32 Kommentare

Hallo liebe Admins, ich habe folgende Situation: 1 Windows Server 2016 Standard als DC 1 SNOM 710 IP-Telefon 1 ...

Off Topic
Darf ich ein Forum erstellen das Produkte eines Herstellers betrifft?
Frage von cyberwallOff Topic9 Kommentare

Hallo Community, ich habe da eine "rechtliche" bzw. allgemeine Frage zum erstellen von Foren. Darf ich als "normale Person" ...

DNS
SFTP über DynDNS nicht OK - über ext. IP funktioniert es
Frage von C.MorgensternDNS8 Kommentare

Hallo zusammen! Ich habe Probleme beim SFTP Zugriff auf eine Linux Maschine vom WAN aus über eine DynDNS Adresse. ...

Router & Routing
Unbekannte IPv4 Adresse im Routerprotokoll(Portweiterleitung)
gelöst Frage von tklustigRouter & Routing7 Kommentare

Hallo Leute, folgender Screenshot(ScanVersusPortForwarding.jpg) zeigt die im Routerprotokoll aufgezeigten Portweiterleitungen und alle von einem IPScanner eruierten IPv4 Adressen in ...