Kopiervorgang in WinCC 6.0 SP4

Anfängerproggi

Level-1
Beiträge
16
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

folgendes Problem. Ich soll immer am 1. eines Monats um eine betimmte Uhrzeit einen Kopiervorgang starten. Ich soll alles aus D:\Daten\*.* nach einen Ordner kopieren, der auch auf D:\Daten liegt. Dieser Ordner soll immer kurz vorher angelegt werden und der Name des Ordners soll immer das Datum und Uhrzeit enthalten. Ich muss auch Systemdaten und versteckte Verzeichnisse kopieren. Wie kann ich das realisieren??
 
Hallo.

Hab mal gerade ein kleines VB-Skript geschrieben und getestet.
Das sollte dir etwas weiter helfen mit deinem Problem.

Dim fso,f,cf,Tag,Std,Min,Ziel,Hilf1,Hilf2,Hilf3

'Now gibt das aktuelle Datum und Uhrzeit zurück

Tag=Day(Now) 'In Tag wird der Tag als Zahl abgelegt
Std=Hour(Now) 'Stunde wird als Zahl abgelegt
Min=Minute(Now) ' Minute wird als Zahl abgelegt

'Abfrage ob gewünschtes Datum und Uhrzeit erreicht wurde
If Tag=21 And Std=15 And Min=39 Then

Hilf1=FormatDateTime(Now,2) 'konvertiert Now nur in die Datumsanzeige
'String für den Zielordner
'Das Leerzeichen oder das h kannst du auch weg lassen

Ziel="C:\" & Hilf1 & " " & Std & "." & Min & "h"

Set fso=CreateObject("Scripting.FileSystemObject")
Set f= fso.CreateFolder(Ziel)
'Es wurde der Ordner C:\21.06.2007 15.39h erstellt

Set cf=fso.CopyFolder("C:\Test\*", Ziel)
'Alle Unterordner und Dateien aus C:\Test wurden in den neu erstellten 'Ordner kopiert

End If


Habe das getestet und es klappt auch soweit.

Musst nur noch Verzeichnisse und so auf deine Anforderung ändern.

Allerdings solltest du noch eine Verriegelung einbauen.
Falls der Kopiervorgang innerhalb dieser Minute abgeschloßen ist, wurde das Skript erneut einen Kopiervorgang starten.
Ist zwar prinzipiell nicht dramatisch aber es könnte dein System etwas ausbremsen.
Schau mal in der Hilfe nach der "FolderExists"-Methode nach.
In der Hilfe findest du auch alle Sachen wieder die ich oben benutzt habe.

Mfg
Chrissi
 
Moin.

Hatte heute morgen noch kurz Zeit aufgrund eines abgesagten Termins.

Mit der Verriegelung kannst du folgendes machen.

Nach der Zeile Set fso=CreateObject....
Schreibst du
If (fso.FolderExists(Ziel)=False) Then

Set f=...
...
End If

Falls der Ordner jetzt schon existiert wird nichts mehr gemacht.
 
Also ich habe das jetzt mal alles getestet. Funktioniert auch soweit alles, nur direkt das kopieren irgendwie nicht. Es wird der Ordner erstellt, aber er kopiert nicht. Hab schon ein bisschen rumgespielt, geht aber nicht.:confused:

Zweites Problem, dass ich noch dann habe ist, dass ich dass noch in eine Schaltflache einfügen wollte, damit die Datensicherung auch manuell laufen könnte. Aber das funktioniert gar nicht.
 
Da war ich woll ein bisschen voreilig.:rolleyes:

Hab gerade mitbekommen, dass es doch funktioniert mit einem kleinen Mancko. Also es wird der Ordner erstellt, und kopiert aus dem Quellverzeichnis die Unterordner einschließlich Dateien dahin. Nur die Dateien, die direkt im Quellordner liegen, nimmt er nicht mit. Das mit dem Button hab ich auch schon gelöst. :cool: :ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kopieren

Hi,
das Ganze kannst du als z.B. "copy_fkt.vbs" in Windows abspeichern, und
dann auf Knopfdruck über WinCC "Andere Anwendungen starten"(also
war das nicht "ProgrammExecute" oder sowas) den Script starten.

P.S. Der Script kann direkt im Windows getestet werden, dafür brauchst kein WinCC. Das muss erst sicher laufen.

Gruss: Vladi

--ZU SPÄT, SORRY!--
 
Hallo.

Das einzige was ich jetzt auf die Schnelle finden konnte ist folgendes.

Leg noch ne zusätzliche Variable an. Z.B Dim cfile

Schreibe in der if - Abfrage zusätzlich

Set cfile=fso.CopyFile("C:\Test\*.*" , Ziel)

Vielleicht gibt es auch ne Methode die beides kann.
Auf die Schnelle find ich jetzt aber nix.

Gruß
Christian
 
Kopierscript

Hi,
nimm für CopyFolder nur "C:\Test", ohne Sternchen usw.Dann wird
alles aus Ordner "Test" rumkopiert.

Gruss: Vladi
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

Hi,
nimm für CopyFolder nur "C:\Test", ohne Sternchen usw.Dann wird
alles aus Ordner "Test" rumkopiert.

ich glaub dann wird aber der Ordner Test mitkopiert nicht nur der Inhalt. Er hat dann also C:\Datum\Test\Inhalt.

Ich hätte das ganze so gelöst. Ist zwar VB sollte sich aber auf WinCC übertragen lassen.

Code:
Dim oFSO As New FileSystemObject
Dim ofolder As Folder
Dim ofile As File
zeit = Replace(FormatDateTime(Now, vbShortTime), ":", ".")
Datum = FormatDateTime(Now, vbShortDate)
Pfad = "C:\blah\"
quelle = Pfad & "test\"
ziel = Pfad & Datum & "_" & zeit & "\"
oFSO.CreateFolder ziel
For Each ofolder In oFSO.GetFolder(quelle).SubFolders
    oFSO.CopyFolder ofolder, ziel
Next
For Each ofile In oFSO.GetFolder(quelle).Files
    oFSO.CopyFile ofile, ziel
Next

Das Ganze dann im Global Script in eine Funktion dann kann man es schön mit einem Button rufen und eine Aktion mit einem Trigger der täglich um XX Uhr das Script ruft. So in etwa :)

Bei Fragen fummel ich das heute Abend gern mal ins WinCC.

Gruß Jo
 
Ordner kopieren

Hi,

ich glaub dann wird aber der Ordner Test mitkopiert nicht nur der Inhalt. Er hat dann also C:\Datum\Test\Inhalt.

getestet mit Win2000: der Script kopiert nur die enthaltene Dateien+Ordner, nicht den Quellordner selbst.

Deine Lösung ist auch gute Idee.

Vladi
 
Zurück
Oben