Textdatei mit Tagesdatum und Uhrzeit im Dateinamen erstellen

fraubi

Mitglied
Thread Starter
Dabei seit
22.01.2007
Beiträge
90
Reaktionspunkte
49
Hi zusammen,

ich synchronisiere für ein Backup meine Dateien mittels der Software Syncovery auf einen externen Datenträger. Um eine Datensicherheit zu haben verwende ich dazu 3 Festplatten, jede Woche eine andere. Damit ich erkennen kann, von wann das letzte Backup auf dem Datenträger ist suche ich eine Möglichkeit, im Zielverzeichnis auf dem dem Sicherungsdatenträger eine Textdatei mit dem Tagesdatum und der Uhrzeit zu erstellen.

Ich bin Umsteiger von Windows, dort habe das mit folgendem Code innerhalb einer Batchdatein realisiert:
Code:
@echo off
REM Version 1.00
REM Erstellt eine Textdatei mit dem Dateinamen des letzten Backupzeitpunktes

d:
cd\
cd D:\Sicherungen_Einstellungen
del Stand*.txt /q

REM DATUM UND UHRZEIT SETZEN UND LEERZEICHEN DURCH NULL ERSETZEN
set DATUM=%date:~-4%-%date:~-7,2%-%date:~-10,2%_%time:~-11,2%-%time:~-8,2%-%time:~-5,2%
setlocal enabledelayedexpansion
set DATUM=!DATUM:^ =0!
setlocal disabledelayedexpansion

REM COMPUTERNAMEN SETZEN
set PCNAME=%COMPUTERNAME%

REM copy NUL "%myDat% - Letztes_Backup.txt"
copy NUL "Stand_%DATUM%_%COMPUTERNAME%.txt"
REM exit
ich vermute, unter MacOs gibt es eine wesentlich einfachere Möglichkeit dieses zu realisieren (Automator etc.), nur leider kenne ich diese nicht.

Kann jemand helfen und mir einen richtungsweisenden Tipp geben ?

Danke
Fraubi
 
Zuletzt bearbeitet von einem Moderator:
- gelöscht -
 
Zuletzt bearbeitet:
  • Gefällt mir
  • Haha
Reaktionen: KOJOTE und mausfang
Ich habe mal den chatAI - Bot gefragt und der haute das hier raus. Obs hilft ? (AppleSkript)
Den kann man natürlich auch nach einem fertigen Script fragen.

Code:
-- Set the current date and time in the format "YYYY-MM-DD_HH-MM-SS"
set currentDate to do shell script "date +'%Y-%m-%d_%H-%M-%S'"

-- Set the current computer name
set currentComputer to do shell script "hostname"

-- Change the current directory to "D:\Sicherungen_Einstellungen"
do shell script "cd /D D:\\Sicherungen_Einstellungen"

-- Delete all files with the name "Stand*.txt" in the current directory
do shell script "del Stand*.txt /Q"

-- Create a new empty file with the name "Stand_currentDate_currentComputer.txt"
do shell script "echo. > Stand_" & currentDate & "_" & currentComputer & ".txt"
Woran man sieht, dass man um ChatGPT was sinnvolles zu entlocken, auch weiß wo die Reise hingehen soll.

Edit: Die Stackoverflow-Policy macht wahrscheinlich Sinn.
 
  • Haha
Reaktionen: warnochfrei
- gelöscht -
 
Zuletzt bearbeitet:
  • Haha
Reaktionen: mausfang
Es ist falsch und unsinnvoll und Du kannst nicht erkennen wo und warum, sonst hättest Du es korrigiert.

Programmieren ist auch Arbeit. Warum sollte ich das heute Nacht um 23 Uhr tun? Unhonoriert. Wenn Du mit ChatGPT umgehen lernen willst, dann finde erst mal heraus warum die Version keinen Sinn macht.
 
  • Gefällt mir
Reaktionen: warnochfrei
Sorry das ich helfen wollte und auch noch die Quelle nannte. Werde es löschen. Sonst gibts noch mehr Gelächter.
 
Im Zitat stehts doch noch drin. Er hats nicht gelöscht. Von daher ... drauf los. ;)
 
  • Haha
  • Gefällt mir
Reaktionen: mausfang und win2mac
Bis Mitte der 90er hatte ich Batches im vierstelligen Bereich geschrieben - für alles und jedes, angefangen mit solchen, die 5 1/4"-Disketten SD oder DD, 3 1/2" DD oder ED formatierten und die Bytes soweit nach oben schoben, dass man direkt mit der richtigen Zahl vergleichen konnte etc. - Das REM kann man übrigens durch :: ersetzen...
IIRC hatte ich ein ähnliches Problem mit einem einfachen PRINT-Befehl gelöst - Schnee von vorgestern.
BTT:
Der Finder bietet doch an, nach unterschiedlichen Daten zu sortieren.
Wenn Du also eine beliebige Datei oder einen Ordner erstellst/erstellen lässt, die 2. Spalte auf Erstellungsdatum einstellst und das aktuellste Datum oben hast, sollte das Problem am simpelsten gelöst sein.
Solange Du nix änderst, sind auch die 3 anderen Datenspalten unverändert...
 
Die Diskussion, ob dein funktionierender Workflow der klügste Ansatz ist, sei mal dahingestellt... warum austauschen, was funktioniert?

Ich bin Umsteiger von Windows, dort habe das mit folgendem Code innerhalb einer Batchdatein realisiert:

Dann mach das doch als Shellscript:

Bash:
#!/bin/sh
# Version 1.00
# Erstellt eine Textdatei mit dem Dateinamen des letzten Backupzeitpunktes

cd /Dein/Ordner   # < anpassen!
rm -f Stand*.txt

# DATUM UND UHRZEIT SETZEN
DATUM=`date +'%Y-%m-%d_%H-%M-%S'`

# COMPUTERNAMEN SETZEN
PCNAME=`scutil --get ComputerName`

echo /dev/null > Stand_$DATUM_$PCNAME.txt
# exit
 
Zuletzt bearbeitet:
Sorry das ich helfen wollte

Würdest du von einem Uhrmacher dein Auto reparieren lassen, bloß weil er Google hat?
Ich meine: er wollte ja nur helfen. Nur blöd, wenn es auf der Autobahn anfängt zu ticken. Dabei hat er sich doch genau an die Anleitung gehalten!

Nur halt an die falsche. Und so ist es hier auch...
Soll heißen: Gut gemeint ist oft das Gegenteil von gut gemacht.
 
Oder als Einzeiler

Code:
#!/bin/sh

cd /Dein/Ordner/ | find ./ -name 'Stand*.timestamp' -exec rm -f {} \; | touch "Stand $(date +%d.%m.%y) $(hostname).timestamp"
 
Das wird auf standardkonformen Systemen nicht funktionieren, $(…) ist keine POSIX-Syntax.
 
Hi,

sorry dass ich mich nicht zu Euren Postings gemeldet habe, aber irgendwie hat die Benachrichtigung des Forums bei neuen Antworten nicht funktioniert. Ich werde Euch Code-Zeilen mal testen, mal sehen ob ich damit klarkomme.

Vielen Dank erstmal
Fraubi
 
  • Gefällt mir
Reaktionen: warnochfrei
... als Antwort auf den Threadtitel:

Bash:
touch $(date -Iseconds)
 
@lisanet
Das ist schonmal cool, kannst Du mir evtl. noch nen Tipp geben, wie ich die ausgegebene Datei in einem bestimmten Ordner erstellen lasse, also sozusagen beides als "Einzeiler"?

Ich hatte versucht:
touch $(date -Iseconds) /Volumes/JetDrive
cd /Volumes/JetDrive | touch $(date -Iseconds)

ging leider beides nicht ;-(

Dankeschön....
 
naja, ein bischen musst du dich schon selbst mit der Shell auskennen.

Du musst entweder zuerst in das betreffende Verzeichnis gehen, oder aber den Dateiname um den kompletten Pfad erweitern. Und ein pipe bringt auch rein gar nichts. Also lass bei deinem 2. Versuch das pipe-Symbol weg und mach beide Befehle separat. Oder wenn es zwingend in einer Zeile sein soll,ersetze die pipe durch einen "Befehlstrenner", also ein Semikolon.

Und nein, ich kaue es dir nicht vor. Sonst gibts ja gar keinen Lerneffekt ;)
 
danke, kein Vorkauen notwendig, hab selbst noch ganz gute Zähne ;-)

LG
Fraubi
 
  • Gefällt mir
Reaktionen: lisanet
Zurück
Oben Unten