Speichert die aktuelle Datei als Sicherheitskopie
Nach dem ich im nicht mehr existierenden Scriptly-Forum eine Anfrage zum
speichern einer Sicherheitskopie erstellt habe und sich niemand dazu
gemeldet hatte, habe ich mich selber an die Arbeit gemacht und habe das
Script geschrieben. Allerdings musste ich feststellen, dass das als
JS-Datei nicht geht, weil man keinen Zugriff auf verschiedene Funktionen
hat.
Type: vbs-Script
Beschreibung:
Script ausführen. Fertig
Die Kopie befindet sich in einem Unterordner “backup “ in einem gleichnamigen Unterordner.
Die Kopien unterscheiden sich mit einem vorangestellten Datum.
Datei save.vb
highlight- as: vbs
''''''''''''''''''''''''''''''''''''''''
' '
' Document copy '
' Duplicates the active document. '
' '
' (cc) Lutz Müller 2013 '
' http://lugm.de '
' info@lugm.de '
' Version 1.0.2 '
' '
''''''''''''''''''''''''''''''''''''''''
dim app, doc, intxt, lang, docName, lastSlash, myOrdner, newOrdner, myFile, lastDot
dim wshell, fso, objFolder,fx, regEx, blank, myDatum, myZeit, docNewName, datum
'VBS-Sript Objekt initiieren
set wshell = CreateObject( "WScript.Shell" )
set fso = CreateObject( "Scripting.FileSystemObject" )
set app = application 'Handle auf die Applications-Klasse holen
set doc = document 'Handle auf die Funktionen fürs aktuelle Dokument holen
docName = doc.fileName 'Dateiname der aktuell geöffneten Datei
docName = Replace(docName,"*","",1,-1,1)
'Ersetzt das erste Vorkommen (Buchstaben) "*" durch "",
'beginnend bei der Position 1, mit textuellen und binären Vergleich
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Das speichern der Datei wird nicht unterstützt
'
' doc.save(docName) 'Speichern der Datei
' wshell.SendKeys "^s" 'Speichern der Datei
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
intxt = doc.text 'Dateiinhalt zwischenspeichern
lang = app.editorLanguage
lastSlash = InStrRev(docName, "\") 'Sucht Position das letzte Slash
myOrdner = mid(docName,1, lastSlash ) 'Verzeichnis-Struktur ermitteln
myFile = mid(docName, lastSlash + 1) 'Dateinamen ermitteln
lastDot = InStrRev(myFile, ".") 'Sucht Position das letzte Punkt
newOrdner = mid(myFile,1, lastDot-1 ) 'Ordnernamen aus Dokumentname ermitteln
'alternative "save_"&mid(myFile,1, lastDot-1 )
'Datum zusammensetzen
set regEx = new RegExp 'Create regular expression.
regEx.Pattern = ":" 'Zu suchender regulärer Ausdruck
regEx.Global = true
regEx.MultiLine = true
regEx.IgnoreCase = true
datum = regEx.Replace(Now, ".") 'Resetzt mit diesem Ausdruck
set regEx = nothing 'Zurücksetzen des regulären Ausdrucks
blank = InStrRev(datum, " ") 'Sucht die Position des Leerzeichens
myDatum = mid(datum,1, blank ) 'Holt das Datum
myZeit = mid(datum, blank + 1) 'Holt die Zeit
datum = myDatum & "_" & myZeit 'Datum und Zeit zusammensetzen
'Zusammenstellen Ordnername, Dateiname
docNewName = myOrdner & "backup\" & newOrdner & "\" & datum & "_" & myFile
strFile = datum & "_" & myFile
strbackup = myOrdner & "backup\"
strDirectory = myOrdner & "backup\" & newOrdner & "\"
'Meldungstext in den verschiedenen Sprache erstellen
if lang = "de" then '
Backup_Bereits_erstellt = "Das Backup-Verzeichnis " & vbcrlf & strbackup & vbcrlf _
& "existiert schon."
Bereits_erstellt = "Das Verzeichnis " & vbcrlf & strDirectory & vbcrlf _
& "existiert schon."
Erstellte_Verzeichnis = "Das Verzeichnis " & vbcrlf & strDirectory & vbcrlf _
& "wurde erstellt."
Erst_Backup_Verzeichnis = "Das Verzeichnis " & vbcrlf & strbackup & vbcrlf _
& "wurde erstellt."
Erstellte_Datei = "Die Datei " & vbcrlf & strFile & vbcrlf & "wurde im Verzeichnis " _
& vbcrlf & strDirectory & vbcrlf & "erstellt."
Error_Datei = "Kann die Datei " & vbcrlf & strFile & vbcrlf & "nicht erstellen."
Information = "Information"
Erfolg = "Erfolg"
else
Backup_Bereits_erstellt = strbackup & vbcrlf & "already created."
Bereits_erstellt = strDirectory & vbcrlf & "already created."
Erstellte_Verzeichnis = "Just created Directory: " & strDirectory
Erst_Backup_Verzeichnis = "Just created Directory: " & strbackup
Erstellte_Datei = "Just created File: " & strFile & vbcrlf & "Directory: " _
& strDirectory
Error_Datei = "Failed the file " & strFile & " does not create."
Information = "Information"
Erfolg = "Success"
end if
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' Die Dialogfelder mit (10 Sekunden) Timeout, werden nicht unterstützt.
' Es werden einfache Dialogfelder angezeigt.
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'Prüfen ob der Ordner exsistiert
if not fso.FolderExists(strbackup) then
set objFolder = fso.CreateFolder(strbackup)
'app.showMessage ErstBackup_Verzeichnis
fx = wshell.Popup(Erst_Backup_Verzeichnis, 10, Erfolg, vbSystemModal)
'Dialogfeld mit (10 Sekunden) Timeout.
else
set objFolder = fso.GetFolder(strbackup)
'app.showMessage Bereits_erstellt
'fx = wshell.Popup(Backup_Bereits_erstellt,1, Information, vbInformation +
vbSystemModal)
end if
'Prüfen ob der Ordner exsistiert
if fso.FolderExists(strDirectory) = false then
set objFolder = fso.CreateFolder(strDirectory)
'app.showMessage Erstellte_Verzeichnis
fx = wshell.Popup(Erstellte_Verzeichnis, 1, Erfolg, vbSystemModal)
else
set objFolder = fso.GetFolder(strDirectory)
'app.showMessage Bereits_erstellt
'fx = wshell.Popup(Bereits_erstellt,1, Information, vbInformation + vbSystemModal)
end if
'Prüfen ob die Datei exsistiert
if fso.FileExists(docNewName) = false then 'Erstellt die Datei
Set objOutputFile = fso.CreateTextFile(docNewName, true)
objOutputFile.Write intxt 'Schreibt den Inhalt in die Datei
objOutputFile.Close 'Schließt die Datei
'app.showMessage Erstellte_Datei
fx = wshell.Popup(Erstellte_Datei,1, "Erfolg", vbSystemModal)
else
'app.showMessage Error_Datei
fx = wshell.Popup(Error_Datei,1, "Error " & Err.Number , vbCritical + vbSystemModal)
end if
set fso = nothing 'Objekt wieder freigeben
set wshell = nothing 'Objekt wieder freigeben
Download:
-
save_1_0_2.zip
- Document copy, Duplicates the active document.
- (2.17 KiB)
- MD5
3694adb529d9abd12bfd839fc9f125fe
- SHA-1
d08bd8a6ef0a948356fc2342dc8bedd8d5e4b183
Nachtrag:12.Mai 2013
Ich habe Heute eine Möglichkeit gefunden, die Datei auch gleich zu speichern. Suchen Sie die Zeile 129 im obigen Code und ersetzen Sie diese Zeile durch des nachfolgenden Code.
highlight- as: vbs
'fx = wshell.Popup(Erstellte_Datei,1, "Erfolg", vbSystemModal)
'Call the Popup method with a 7 second timeout.
btn = wshell.Popup(Erstellte_Datei,7, "Save?", &H4 + &H20 + vbSystemModal)
Select Case btn
' Yes button pressed.
case 6
wshell.SendKeys "%" 'Menü aktivieren
wshell.SendKeys "d" 'Gruppe Datei anzeigen
wshell.SendKeys "s" 'Speichern der Datei
' No button pressed.
case 7
' Timed out.
case -1
End Select
Hinweis: Der „Timed out “ wird in der Aktuellen Scriptly-Version nicht unterstützt.
Alternativ gibt es die aktuelle Datei (Version 1.0.3) auch zum Download.
Download:
-
save_1_0_3.zip
- Document copy, Duplicates the active document.
- (2.27 KiB)
- MD5
be077074d1ade3102a69fd6aad01242d
- SHA-1
9c7dd0ebad7553f9e9bd2448d36333bb665cc5b4
Unicode-oder ASCII-Datei?
Nachtrag:15.Mai 2013
Wie ich eben festgestellt habe werden meine Sicherheitskopien im ASCII-Format gespeichert. Auf der Suche nach einer Lösung bin ich auf einen
Optional-Operator gestoßen. Dieser Boolescher Wert, angibt an, ob die Datei als Unicode-oder ASCII-Datei erstellt wird.
Der Wert ist true, wenn die Datei als Unicode-Datei erstellt und false, wenn sie als ASCII-Datei erstellt wird. Wenn der Wert wie bei mir weggelassen wird, wird automatisch eine ASCII-Datei erstellt.
highlight- as: vbs125. Set objOutputFile = fso.CreateTextFile(docNewName, true)
ASCII-Datei
highlight- as: vbs
125. Set objOutputFile = fso.CreateTextFile(docNewName, true,
true)
UTF16-le-Datei
Sie lesen gerade UTF16-le? Richtig! Der Scriptly Speichert nun die Datei in diesen Format was für unsere Zwecke auch Falsch ist.
Ich weiß nicht ob der Herr Benedikt Loop dort überhaupt Einfluss nehmen kann, dies steht aber auch jetzt nicht zur Debatte!
SHA-1/MD5 Hash Generator 1.0.3
SHA-1/MD5 Hash Generator vergleicht Dateien und Texte anhand der SHA-1- oder MD5-Prüfsummen. Mit diesem Programm möchte ich ausschließen, dass fremde Software meinen Code verändert, ohne das der Benutzer es merkt.
Download direkt von heise.de