Question Compression de fichiers avec nom particulier

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 8 ans 1 mois #25339 par PatriceLT
Compression de fichiers avec nom particulier a été créé par PatriceLT
Bonjour à tous,

Je souhaiterai avoir de l'aide sur quelque chose en particulier, j'ai vu plusieurs messages concernant ce type de demande, mais aucune ne fonctionne pour ma part, du moins de ce que j'en attend.

Voici ce que je fais :

- Script permettant l'extract de donnée depuis des serveurs SQL depuis powershell et ce, en tâche planifiée.

Ce qui est fait :

- A partir d'un fichier de paramètre en .csv, de fichiers .sql dans des dossiers spécifiques, je fais une connexion en base de donnée, j'exécute les requêtes qui sont dans mes fichiers .sql (avec des noms particuliers) et j'en extrait les tables dans un fichier de sortie .csv

Ce que je dois faire :

- Permettre à certains fichiers .csv avec un nom particulier de pouvoir être zippé à la fin de mon compte, donc une fois que tous mes fichiers .csv ont été généré dans le dossier cible, et donc que toutes mes requêtes sql ont été faites (les requêtes peuvent durer un certain temps, et donc, les fichiers .csv générés ne se font qu'après que les requêtes soient terminées.

- Il faudrait donc que je puisse faire en sorte, une fois tous les fichiers présents dans le dossier, récupérer que certains fichiers dans ce dossier avec un nom bien spécifique.


Ce que j'ai déjà essayé de faire :

Faire un Get-ChildItem dans mon dossier, avec en exclusion les *.zip, et de compresser, via une fonction déjà présente sur ce forum, qui est la Compress-ToZip (lien www.powershell-scripting.com/index.php?o...id=259&Itemid=71 )

Cependant, il fait de la copie de fichier presque en direct, et demande une action si les fichiers sont déjà présent dans l'archive.

Il faut donc au final, que j'ai une fonction qui gère la compression, l'exclusion des archives .zip déjà présentes, ainsi qu'attendre que tous les fichiers .csv soit générés sans action manuelle.

Avez-vous ça en stock ?

Une piste peut être ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 1 mois #25340 par xyz
Salut,
PatriceLT écrit:

Une piste peut être ?

Peux-tu reformuler ce que tu dois faire ?
Par exemple, j'ai un peu de mal avec ceci :

- Permettre à certains fichiers .csv avec un nom particulier de pouvoir être zippé à la fin de mon compte,

As-tu une archive par fichier concerné ou une seule archive pour tous les fichiers ?
Tu crées une archive a chaque exécution ou tu complètes une archive existante ?

Je te déconseille la fonction que tu utilises.
Regarde ceci , précises nous l'OS cible et la version de Powershell installée.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 8 ans 1 mois #25345 par PatriceLT
Réponse de PatriceLT sur le sujet Re:Compression de fichiers avec nom particulier
Bonjour Laurent,

Désolé pour cette confusion, le \"à la fin de mon compte\" était en trop.

Pour répondre à tes questions :

As-tu une archive par fichier concerné ou une seule archive pour tous les fichiers ?


J'ai actuellement une archive générée chaque jour qui se fait automatiquement via une tâche planifiée (car tout est fait en tâche planifié), du coup cela se base à la fois sur le nom de certains de mes fichiers .csv et en même temps sur la date. Donc pour être plus précis, une archive générée chaque jour.

Tu crées une archive a chaque exécution ou tu complètes une archive existante ?


Je dois créer une archive chaque jour :

Archive_23042018.zip contenant toto_23042018.csv + titi_23042018.csv

Archive_24042018.zip contenant toto_24042018.csv + titi_24042018.csv

J'ai en sortie du coup (via mes requêtes .sql), plusieurs fichiers .csv dont celles qui doivent être ajouté dans l'archive.

toto.sql génère toto_23042018.csv
titi.sql génère titi_23042018.csv
tata.sql génère tata_23042018.csv
tralala.sql génère tralala_23042018.csv

Au final, 5 requêtes sql qui génère 5 fichiers csv de sortie, 2 de ces 5 fichiers doivent être compressé chaque jour automatiquement sans action humaine.

Si besoin je pourrai fournir mon code, ou il ne me manque que le fichier x_date.zip contenant les 2 ou X fichiers x_date.csv

J'ai d'autres contraintes, aucune interaction.
Aucune possibilité de changer la version Powershell cliente qui est actuellement en version 2 et donc impossible d'ajouter quelque module powershell que ce soit. Impossible de modifier l'OS Server, qui est, actuellement en 2012 ou 2012 R2.

J'ai donc regardé ton lien, et ne peux du coup, pas rajouté de .psm1 qui est pour sa part un module n'étant pas intégré nativement à powershell. Si ce n'est pas possible dans la version actuelle de powershell, je pourrai éventuellement essayer d'en savoir plus mais pour l'instant, aucun ajout n'est possible.

En faite, le script que je suis en train de faire, est une adaptation pour faire ce que fais actuellement un script .vbs avec un .cmd lui étant attaché. Je ne fais donc en powershell, que les actions de ces 2 fichiers afin de traiter les mêmes données, et donc d'avoir le même résultat (reporting) au final

Merci en tout cas pour ton aide, en espérant que mes explications soient un peu plus clair.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 1 mois #25347 par xyz
PatriceLT écrit:

J'ai d'autres contraintes, aucune interaction.
Aucune possibilité de changer la version Powershell cliente qui est actuellement en version 2 et donc impossible d'ajouter quelque module powershell que ce soit.

Je connais, l'ascension par la face Nord est difficile ;)

PatriceLT écrit:

en espérant que mes explications soient un peu plus clair.

Oui, très.

La fonction de compression citée utilise en interne un objet COM qui peut parfois poser pb, c'est pour cela que je la déconseille. Donc à part utiliser un prg d'archive existant sur le serveur ou une dll dotnet je ne vois pas de solution, mais Google en a peut être.

Par contre le fait que le fichier existe déjà dans ton archive, si elle est créée chaque jour, me semble être un bug dans ton code, à vérifier. Et sinon je ne comprend pas trop ce comportement.

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

  • PatriceLT
  • Auteur du sujet
  • Visiteur
  • Visiteur
il y a 8 ans 1 mois #25349 par PatriceLT
Réponse de PatriceLT sur le sujet Re:Compression de fichiers avec nom particulier
Bonjour Laurent,

Merci pour ta réponse, actuellement, les scripts vbs font appels a 7zip via l'exe avec des options qui permet une compression, est-ce très optimisé, je ne sais pas.

Je vais au cas ou mettre la totalité de mon code, afin de voir si il n'y aurait pas des bugs dans celui ci, comme tu me l'as indiqué. Peut être pour la phase de compression il y aura une solution, du moins je l'espère, car d'après ce que j'ai appris, cette compression va servir, une fois la compression de certains des fichiers évoqués faite, un autre serveur viens les récupérer.

Je te met mon code ce soir afin de te donner plus de détails.

Et peut être il pourra servir à d'autres.

Cdt.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 8 ans 1 mois #25350 par xyz
PatriceLT écrit:

Merci pour ta réponse, actuellement, les scripts vbs font appels a 7zip via l'exe avec des options qui permet une compression, est-ce très optimisé, je ne sais pas.

Au vue des choix laissés à ta disposition je te dirais oui :P
Je préfère nettement cet approche que le CopyHere.

Je regarderais le code dés que je peux

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.042 secondes
Propulsé par Kunena