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

Auf voherigen Tag zugreifen

Frage Entwicklung Batch & Shell

Mitglied: Joe.Baer

Joe.Baer (Level 1) - Jetzt verbinden

05.06.2013 um 18:09 Uhr, 1132 Aufrufe, 2 Kommentare

Hallo zusammen,
leider finde ich nicht das was ich suche.
Ich erstelle jeden Tag mit einer batch-Datei eine .txt Datei.
Die Dateien haben immer das Tagesdatum bei der Erstellung:

set mydate=%date:~-4%-%date:~-7,2%-%date:~-10,2%

set "datei2=%mydate% xxxxx.txt"
if exist "%datei2%" move "%datei2%" "%datei2%.bak"
echo %mydate% %mytime% %1 >"%datei2%"
if exist "%datei2%.bak" type "%datei2%.bak">>"%datei2%"

Dies ist auch soweit in Ordnung.

Jetzt möchte ich einen Tag später auf die Datei zugreifen und diese in einen Ordner verschieben. Wie kann ich dies realisieren bzw. wie kann ich af die Datei zugreifen?

Dank & Gruß Joe.Baer
Mitglied: Biber
05.06.2013, aktualisiert um 19:00 Uhr
Moin Joe Baer,

willkommen im Forum.

Der CMD-Befehlsumfang beinhaltet ja nun leider nix, was in Richtung "Datumsarithmetik" geht - es gibt schlicht und einfach keinen Datentyp "Datum/Zeit" im Befehlsinterpreter.

Also musst du hier Umwege gehen und dazu kannst du über unsere Suchfunktion einige Varianten finden.

Mogliche Lösungsstrategie a)
Die CMD.exe kennt zwar kein "Datum" und daher auch kein "gestern" oder "morgen", aber mit verfügbaren Standardtools wie VBScript/JScript können das durchaus. Ein VBScript kannst du aus der Batchdatei heraus temporär erzeugen, aufrufen und das Ergebnis für deine Zwecke verarbeiten. Suche mal nach "gestern.vbs" oder "yesterday.vbs" hier in der Forumssuche.

Mögliche Strategie b)
Die "gestern" erzeugte Datei, die verschoben werden soll, ist ja immer die "jüngste" Datei (mit der Namenskonvention "201?-??-?? xxxxx,txt", Die Datei(en) kannst du mit dem "DIR /od"-Befehl nach Datum sortiert anzeigen lassen und mit einer FOR-Anweisung die jüngste/älteste rausflöhen. Suche dazu nach "neueste Datei/älteste Datei"

Mögliche Alternativ-Strategie)
Verzichte auf den Datumsstempel im Dateinamen - mache es stattdessen über einen Zähler, eine laufende Nummer im Dateinamen,
Von Dateien der Konvention "Log_1024.txt", "Log_1025.txt, ..." (oder allgemein: von namensbezogen eindeutig sortierbaren Dateien) kannst du immer die letzte vorhandene und die nächste freie ermitteln (oder "berechnen").

Grüße
Biber
Bitte warten ..
Mitglied: Endoro
05.06.2013 um 21:48 Uhr
Hi Joe.Baer,

wie von Biber schon augeführt, gibts in cmd keine Funktion Date2Number. Wenn du also bei deinem Arbeitspfad bleiben möchtest, musst du diese Funktion selbst implementieren.

Dazu benötigst du zu aller erst einen Anker im Ozean der Zeit. Von diesem Fixpunkt an beginnst du einfach die Tage zu zählen, denn die brauchst du ja. Nun kannst du bequem das Datum in Tage umrechnen. Die Wahl des Fixpunktes bleibt dir überlassen, anbieten würden sich Kaisers Geburtstag oder der Hochzeitstag der Grossmutter

Wenn du keinen gesteigerten Wert darauf legst, den Nullpunkt selbst festzulegen, kannst du natürlich auf eine Funktion aus dem Netz zurückgreifen. Ich jedenfalls greife mir dann gern diese.

Gruss!
Bitte warten ..
Ähnliche Inhalte
Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(1)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Windows 10
Windows 10 Home "Netzlaufwerk nicht bereit" (11)

Frage von Oggy01 zum Thema Windows 10 ...

SAN, NAS, DAS
+100tb Storagelösung (10)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...