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
GELÖST

Ordner nach Datum sortiert finden

Frage Entwicklung Batch & Shell

Mitglied: maddus

maddus (Level 1) - Jetzt verbinden

29.03.2011 um 14:42 Uhr, 3679 Aufrufe, 14 Kommentare

Hallo,

dank des Forum konnte ich schon meine Dateien per Batch zippen und in einen Ordner packen. Die Ordner haben folgende Struktur JJJJ-MM-TT. Jetzt möchte ich per Batch den Namen des aktuellsten Ordners in eine Variable speichern.

Bsp.:
2011-03-16
2011-03-25
2011-03-27
2011-03-28

Die Batchfunktion soll mir nun 2011-03-28 zurückgeben.

Wie kann man sowas realisieren? Gerne auch Denkanstöße wonach ich suchen könnte, um selber die Lösung zu finden. Ein Dankeschön schon mal im Voraus...

Mit freundlichen Grüßen
maddus
Mitglied: BigWim
29.03.2011 um 15:06 Uhr
Moin maddus,

mein Vorschlag wäre mit einer For-Schleife einen Dir auszuführen und je nach Sortierung ist der aktuellste Ordner entweder der erste oder letzte Wert ....

Grüße
Markus
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 15:09 Uhr
Aloha,

auf die Schnelle würde ich per dir /b /ad /oOption %Pfad% eine temporäre Datei erstellen, wo die Ergebniss reingeschrieben werden und per for-Schleife die letzte Zeile auslesen (hab da was rumliegen ;D aber du möchtest ja gerne selbst die Lösung finden => gut so).
(ginge bestimmt auch anders aber das ging mir jetzt am Schnellsten für mich ^.^)

greetz André

edit: Option hinzugefügt (n bevorzugt)
Bitte warten ..
Mitglied: bastla
29.03.2011 um 15:14 Uhr
@Skyemugen
Bitte keine "temporäre Datei" (und Deinem "/o" fehlt das "d") ...

@BigWim
... wobei es die Verwendung des letzten Wertes einfacher macht ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 15:22 Uhr
Aloha bastla!

da fehlt nicht unbedingt das /d, man könnte auch /n nehmen, daher ließ ich es weg :P darf der TE entscheiden.
Keine temp-Datei, ne? Dachte ich mir schon, nur schnell per useback delims txt-Datei auslesen lief bei mir, direkt den letzten Wert aus'm dir in der for-Schleife auszulesen will mir heute nicht gelingen *grml*

greetz André
Bitte warten ..
Mitglied: BigWim
29.03.2011 um 15:26 Uhr
@bastla
... wobei es die Verwendung des letzten Wertes einfacher macht ...
Tja, ich konnte mich nicht entscheiden, was sinnvoller ist.

  • Bei Verwendung des letzten Wertes muß die For-Schleife ja durchlaufen.
  • Bei Verwendung des ersten Wertes benötige ich eine Abbruchbedingung.

Ich hätte das jetzt in Abhängigkeit der Rückgabewerte von Dir entschieden ...

Grüße
Markus
Bitte warten ..
Mitglied: bastla
29.03.2011 um 15:40 Uhr
@BigWim
"for"-Schleifen lasse ich eigentlich immer bis zum Ende laufen, deswegen finde ich den letzten Wert besser ...

@Skyemugen
Mit den beiden Möglichkeiten hast Du natürlich recht (wobei ich eigentlich auch - aufgrund der vernünftigen Schreibweise JJJJ-MM-TT - zu "n" raten würde); aber es sah irgendwie "unfertig" aus ...

Da die Ordnernamen ja offensichtlich nur aus der Datumsangabe bestehen, brauchst Du weder "delims" nocht "usebackq" (und noch nicht einmal "tokens") - allerdings würde ich (zur Sicherheit) dem %Pfad% noch eine Maske der Art "20??-??-*" mit auf den Weg geben ...

Grüße
bastla
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 15:44 Uhr
Aloha bastla!

ja, danke, habe ich eben auch gemerkt, dass ich den Vorkäse weglassen kann und es dann natürlich auch so funktioniert mit dir in der Schleife.
Die Maske für den Fall, dass noch andere Ordner enthalten sein könnten? tbh: da ich kein Theater mag, wäre ich mir nicht ganz sicher, wie das Maskieren in diesem Fall geschehen sollte

greetz André
Bitte warten ..
Mitglied: bastla
29.03.2011 um 15:50 Uhr
Hallo Skyemugen!

Mit der Schreibweise
dir /b /ad /on "%Pfad%\20??-??-*"
sollte das bis inklusive 2099 (ganz ohne Theater) funktionieren ...

Grüße
bastla

[Edit]
So ein "/a-d" hätte das Ganze aber spannender gemacht ...
Na gut, dann ändere ich es eben wieder.
[/Edit]
Bitte warten ..
Mitglied: BigWim
29.03.2011 um 15:54 Uhr
Hallo Bastla,

"for"-Schleifen lasse ich eigentlich immer bis zum Ende laufen, deswegen finde ich den letzten Wert besser ...
Dann vertraue ich auf Deine Erfahrungswerte und werde das beherzigen. Die Wahrscheinlichkeit (in diesem Fall) auf >21.900 Ordner zu treffen, ist ja wirklich nicht riesig ....

Grüße
Markus
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 15:57 Uhr
Aloha bastla!

hm, interesting, warum bin ich bisher noch nie über ein solches Maskieren gestoßen ... hm
Aber das /a-d lassen wir doch lieber bei /ad sonst find' der nix ^.^

So, der TE hat mich nun mehrfach schon pmed, dass ihn die Lösung interessiert ...
Geben wir ihm noch ein wenig Zeit, die einfache Sache mit unseren Kommentaren selbst zu schaffen schlimm genug, dass wir schon wieder so viel dazu schreiben *lach*

greetz André
Bitte warten ..
Mitglied: maddus
29.03.2011 um 15:58 Uhr
Erstmal ein großes Dankeschön an alle. Hier nun meine "Lösung" bei Fehlern bitte gerne berichtigen.

01.
for /f %%i in ('dir /b /ad /od D:\Sicherung\20??-??-*') do ( 
02.
set variable=%%i 
03.
04.
echo %variable%
Somit bekomme ich den aktuellsten Ordner angezeigt.
Bitte warten ..
Mitglied: Skyemugen
29.03.2011 um 16:02 Uhr
Aloha maddus!

zwei Sachen:

a) da du nur einmalig die Variable setzt, kannst du auch alles ohne Klammern, in einer Zeile schreiben (was das do in der for-Schleife betrifft
b) wie wir angedeutet haben, wäre u.U. die Option /on besser, nimm mal an, du erstellst nachträglich einen 2011-02-20-Ordner, dann wäre der dein Ergebnis

ansonsten, schön gemacht ;)

greetz André

edit: fehlt eigentlich nur noch das grüne Häkchen am Thread und dann hab' ich auch gleich Feierabend *grins*
Bitte warten ..
Mitglied: bastla
29.03.2011 um 16:06 Uhr
... und noch ein letztes Detail: Die Variable enthält (da "dir /b" ohne "/s" immer nur Datei-/Ordner-Namen liefert) natürlich keinen Pfad zum entsprechenden Ordner, daher ggf:
set variable=D:\Sicherung\%%i
oder vorweg mit
pushd D:\Sicherung
in den "Eltern"-Ordner wechseln (und nach der Verarbeitung mit "popd" zurück) ...

Grüße
bastla
Bitte warten ..
Mitglied: maddus
29.03.2011 um 16:09 Uhr
Danke für die letzten beiden Kommentare und jetzt gibt es ein Häckchen für den Thread

Mit freundlichen Grüßen
maddus
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(2)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

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

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (10)

Frage von 1410640014 zum Thema Backup ...