PDA

View Full Version : WinCC Flex VBScript WinCe - Move *.* bzw. Dateien kopieren



Dino
06.01.2011, 15:44
Hallo Jungs!

Anbei noch eine Variante mit Namengebung des Destinationsfiles. Das oder die Dateien werden beim Kopiervorgang umbenannt in:
"MeinString" & "Datum Zeit der Quelldatei".
Achtung: diese Prozedur bedingt eine Änderung in den regionalen Settings (control panel). Leider habe ich keine bessere Lösung gefunden! Zwingend muss in "Time" das ":" gegen ein "." ausgewechselt werden. Nicht zwingend kann in "Date" das Format "JJJJ.MM.TT" gesetzt werden. Das letztere hat den Vorteil auf dem USB-Stick Ordnung zu schaffen. Es hat jedoch den Nachteil die Alarmliste auch in diesem ungewöhnlichen Format anzuzeigen.

Im "normalen WinnCC-Flex" bitte folgende Variable deklarieren:
DataMmcFilename: String (L32, kann auch anders sein)




'Skript "CopyRenameFile" / DI - 11.01.2011
'===========================================

Dim PathSearch, Path, fso, Result, Index, SourceFile, DestFile

Set PathSearch = CreateObject("FileCtl.FileSystem")

'USB-Stick suchen
'----------------

Path = "Storage Card USB"

SetValue SmartTags("DataSaveText"), 1 'Text: Suche USB-Stick

For Index = 1 To 30000 'entspricht ca. 20 Sekunden
If PathSearch.Dir("\" & Path) = ""_
And Index >= 30000 Then
SetValue SmartTags("DataSaveText"), 2 'Text: USB-Stick nicht gefunden!

ElseIf PathSearch.Dir("\" & Path) = Path Then 'Gefunden!
SetValue SmartTags("DataSaveText"), 3 'Text: Datenübertragung gestartet
Exit For
End If
Next

'CSV-Daten suchen, mit neuem Namen kopieren und Attribut auf Normal setzen
'-------------------------------------------------------------------------

If SmartTags("DataSaveText")= 3 Then 'Datenübertragung gestartet
Set fso = CreateObject("FileCtl.FileSystem")

If SmartTags("DataMmcFilename") = "" Then 'Leerer String als Dateiname
SmartTags("DataMmcFilename")= "Archiv" 'ist unschön
End If

Result = fso.Dir("\Storage Card MMC\*.csv") 'Suchen nach ersten Dateiname
If Result = "" Then
SmartTags("DataSaveText")= 4'Text:Keine Daten vorhanden
Else
SourceFile = "\Storage Card MMC\" & Result
DestFile = "\Storage Card USB\" & SmartTags("DataMmcFilename")& "_" & fso.fileDateTime(SourceFile) & ".csv"
SmartTags("DataSourceFileName")= SourceFile
SmartTags("DataDestFileName")= DestFile
fso.FileCopy SourceFile,DestFile
fso.SetAttr SourceFile, 0
For Index = 1 To 999
Result = fso.Dir() 'Suchen nach weitere Dateinamen
If Result = "" Then
Exit For
Else
SourceFile = "\Storage Card MMC\" & Result
DestFile = "\Storage Card USB\" & SmartTags("DataMmcFilename")& "_" & fso.fileDateTime(SourceFile) & ".csv"
SmartTags("DataSourceFileName")= SourceFile
SmartTags("DataDestFileName")= DestFile
fso.FileCopy SourceFile,DestFile
fso.SetAttr SourceFile, 0
End If
Next
SmartTags("DataSaveText")= 5 'Text:Daten mit Erfolg übertragen
SetValue SmartTags("ScriptIndex"), Index

End If
End If

'Daten auf MMC löschen
'---------------------
fso.Kill ("\Storage Card MMC\*.csv")

'Init
'----
Set PathSearch = Nothing
Set fso = Nothing

Ich wäre sehr froh wenn mich jemanden belehren könnte wie man einen WinCE-String mit WinCC-Flex ausseinander-schlachten und wieder zusammensetzen kann, zum Beispiel:
2011.01.11 18:06:33 ändern in
2011.01.11_18.06.33

Schöner Gruss, Dino


---------- EDIT MODERATOR VOLKER ----------
obiges stammt aus folgendem thread. es lohnt sich auch hier nochmal weiterzulesen.
http://www.sps-forum.de/showthread.php?t=41710