TP1200 copie d'un dossier de la carte SD à une clé usb

Partie du forum pour tout ce qui concerne les interfaces homme machine ou IHM. Forum, conseil, astuce et entraide sur les interface homme machine ou IHM tels que les magelis, KEP, proface, XBT, .
Hyro
Code sa première boucle
Code sa première boucle
Messages : 16
Enregistré le : 03 sept. 2021, 14:44

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Message par Hyro »

Merci à vous pour l'aide

De ce que j'ai sur la doc du "FileCtl.filesystem" il n'y a que cette commande pour copier quelque chose (Copyfile)

J'y ai pensé à la boucle, je ferai sa sur une autre machine car la les ticket sont nommés avec se schéma:
Ticket_date_heure de début_Heure de fin
Si les tickets avaient eu juste un numéro dans leur nom ça aurai été simple mais la pour crée une boucle avec des noms pareil je vois pas trop :?

Et l'astuce de le renommer ça marche pas vu que je veux le changer d'espace de stockage.
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 789
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Message par djé »

Salut,
du coup tu peux essayer moveFIle:

MoveFile: This method renames an existing file or a directory, including all its subdirectories.
Syntax filesystem.MoveFile PathName, NewPathName
Parameters
  • filesystem :
Reference to a FileSystem control.
  • PathName :
String that contains the file name.
  • NewPathName :
String that contains the file name to copy to.
Return Value : None

Si tu ne spécifies que des dossiers, a priori il les déplace (fichiers + ss dossiers)
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Hyro
Code sa première boucle
Code sa première boucle
Messages : 16
Enregistré le : 03 sept. 2021, 14:44

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Message par Hyro »

Slt

J'ai essayer le move file en ne mettant que les noms de dossiers et ça passe pas.
L'ihm me met encore une fois Error, access denied in script sdcopy in line 20.

la ligne 20 : fso.MoveFile "\Storage Card SD\TICKET" , "\Storage Card USB\Stock"

J'ai l'impression que l'ont est obligé de pointer des fichiers avec une extension sinon c'est mort.
Je vais voir Avec Neoxy le service de rexel demain si ils en savent plus.

ET entre temps je vais voir si je peux pas enregistrer les noms sur de ticket sur un Array pour faire une boucle de copyfile
Barbu21
Code son premier grafcet
Code son premier grafcet
Messages : 48
Enregistré le : 29 sept. 2020, 14:27

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Message par Barbu21 »

Salut Hyro,

Il est possible de copier tous les fichiers d'un dossier depuis la carte sd vers une clé usb par contre il faut utiliser une boucle. J'essaye de te retrouver un bout de script que j'avais fais pour un de nos client

Code : Tout sélectionner

Sub Pending_files()

Dim fso, fichier
Dim repertoireServeur, repertoireFichiersEnAttenteServeur, numeroBatch, dateDebutBatch, heureActuelle

' Initialisation des variables
repertoireServeur = lien clé usb
repertoireFichiersEnAttenteServeur = lien carte SD

' On récupère le nom du batch
numeroBatch = SmartTags("BATCH_NAME")
dateDebutBatch = SmartTags("DATE_START_BATCH")
heureActuelle = SmartTags ("HOUR_START_BATCH")

Set fso = CreateObject("FileCtl.FileSystem")


fichier = fso.Dir(repertoireFichiersEnAttenteServeur + "*.csv")


While fichier <> ""
	
	'Recherche du dossier nom batch + date sur le serveur client, s'il n'existe pas on le créé
'If fso.Dir(repertoireServeur & numeroBatch & "_" & dateDebutBatch & heureActuelle) = "" Then
'fso.MkDir repertoireServeur & numeroBatch & "_" & dateDebutBatch & heureActuelle
'End If

	' Copie du fichier vers le serveur
	fso.FileCopy repertoireFichiersEnAttenteServeur & fichier, repertoireServeur & "\" & fichier
	
	' Suppression du fichier du répertoire de base
	fso.kill repertoireFichiersEnAttenteServeur & fichier

	'Passe au fichier suivant
	fichier = fso.dir()
	

Wend

Set fso = Nothing
Hyro
Code sa première boucle
Code sa première boucle
Messages : 16
Enregistré le : 03 sept. 2021, 14:44

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Message par Hyro »

Bonjour

Merci pour vos réponses.

Je viens juste de voir la dernière donc j'ai pas eu le temps de tester ce code, je vais me penchez dessus.
Pour l'instant j'ai réaliser autre chose ou j'ai deux script différents qui se lancent sur l'appuie de deux boutons

le premier qui me sert à copier tout mes CSV, mais j'ai du changer les nom des tickets lors de leur création.
J'ai une variable rémanente qui s'incrémente à chaque création de ticket afin de connaitre le nombre de document que j'ai.

Dim fso
Dim index_ticket
Set fso = CreateObject ("FileCtl.filesystem")
index_ticket = 1
Do While x1 <> Total_Ticket
fso.FileCopy "\Storage Card SD\Ticket\TICKET_" & index_ticket & ".csv","\Storage Card USB\Stock\Ticket_" & index_ticket & ".csv"
index_ticket= index_ticket + 1
Loop

Msg = "Copy of all Tickets is succesfully done, you can unplug the usb key"

Et le second script ou je supprime tout les document du dossier et ou je remet mon compteur à zéro

Dim fso
Dim index_ticket
Set fso = CreateObject ("FileCtl.filesystem")
index_ticket = 1

Do While x1 <> Total_Ticket
fso.Kill "\Storage Card SD\Ticket\TICKET_" & index_ticket & ".csv"
index_ticket = index_ticket+1
Loop

Total_Ticket = 0
Msg = " All tickets in the SD card are succesfully deleted"

Du coup sa fonctionne mais j'avoie que c'est pas super optimisée et clairement sa prend pas en compte les dérive du genre il y à pas le dossier nécessaire ou si le document existe déjà dans la nouvelle direction.
Pareil c'est super rigide sur le nom des tickets du coup.

Je vais regarder si j'arrive à appliquer ta solution @Barbu21 et merci encore.

Sur-ce bon WE à tous
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2084
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: TP1200 copie d'un dossier de la carte SD à une clé usb

Message par philou77 »

Salut !

La fonction DIR te renvoie le premier fichier, dossier, chemin qui correspond à l'argument (on peut utiliser les wildcard * ou ?)
tu peux donc faire la copie d'un fichier sans réellement connaitre son nom à la base.
utilise KILL pour tuer le fichier source si la fonction copie a réussie.
utiliser ensuite la fonction dir sans arguments pour les fichiers suivants..
dir renvoie une chaine nulle si plus aucun fichier correspondant..

ca peut permettre de faire une boucle plus sympa et 'universelle' ou presque..

il existe aussi une fonction MOVEFILE au passage, peut être mieux que la copie, pas besoin de kill ?
regarde ici : https://support.industry.siemens.com/fo ... anel/90445
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Répondre