OVH Cloud OVH Cloud

Copie de fichier générique

19 réponses
Avatar
---DGI972---
Bonjour a tous,
Je reçois, sur un pc, un fichier tous les jours (sauf le samedi et le
dimanche).Ce fichier est réceptionné dans un répertoire fixe avec une
racine constante le quantième du jour et une extension numérique selon
le numéros d'ordre d'arrivée (par ex FICH231.554 ;231= quantième du
19/08/2005). Je dois le recopier ce fichier sur 2 autres pc avec un non
fixe.
comment récuperer le fichier en ne sachant pas a l'avance le numéro
d'ordre d'arrivé ?
pour le Quantième j'ai trouvé la formule magique

Voici le début de mon script

Option Explicit
Dim fso, sPath, sFileName, sFile, fileIn, fileOut, QUANT, monshell,
DossierDest1,DossierDest2

DossierDest1 = "\\192.168.15.156\CLIENTS\MAR\"
DossierDest2 = "\\97.10.2.10\D\CLIENTS\GUA\"
set monshell = WScript.CreateObject("WScript.Shell")
monshell.Run "NET USE "& DossierDest1 &" test /USER:DOMAINE/toto
tata",0, true
monshell.Run "NET USE "& DossierDest2 &" test /USER:toto tata",0, true

Set fso = CreateObject("Scripting.FileSystemObject")


QUANT=Date()-DateSerial(Year(Date()),1,1)+1 'fabrication du quantième
if QUANT<10 then QUANT="00"&QUANT
if QUANT<100 then QUANT="0"&QUANT

sPath = "\\192.168.15.156\CLIENTS\MAR\"
sFileName = "BDFIMP"&QUANT&".*" 'la j'ai un PB
SFile = sPath & sFileName

Set fileIn = fso.GetFile(sFileName)'la j'ai un PB
fileIn.Copy "\\192.168.15.156\CLIENTS\MAR\IMP\IMPBAFIC"
fileIn.Copy "\\97.10.2.10\D\CLIENTS\GUA\IMP\IMPBAFIC"

Je compte mettre se Script dans le planificateur de tâche tous les
matin des jours de la semaine.

Merci d'avance pour vos conseils

10 réponses

1 2
Avatar
Do Re Mi chel La Si Do
Bonjour !

C'est très facile. Inutile de se lancer dans un truc bien compliqué, avec du
VBscript, du WSH, et Cie.

Un simple script (.BAT) permet de le faire.


Voici un exemple :

@echo off
cd REPRECEPTEUR
for /F %%i in ('dir F*.* /B /O:E') do (set dernier=%%i)
copy %dernier% C:REPDESTTOTO.TXT


Explications :

Ligne 1 : on désactive l'affichage (facultatif)
Ligne 2 : on va dans le répertoire qui reçoit les fichiers
Ligne 3 : on récupère le nom du dernier fichier "F*.*" trié par ordre
des extensions (donc n° arrivée)
Ligne 4 : on copie ce fichier comme "TOTO.TXT" dans le répertoire de
destination.





C'est très simple, rapide et performant. Alors, pourquoi chercher plus loin
?


@-salutations

Michel Claveau
Avatar
Fred
Dans : news:,
---DGI972--- disait :

Bonjour a tous,


Bonjour Gilles,

Je vois que Michel t'as donné une solution très élégante et très
compacte en batch.
Donc je ne renchérit pas en vbs.
Et ton problème de spooler ? As-tu finalement réussi à faire la dernière
modif ?
Plus de nouvelles depuis un mois :-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Do Re Mi chel La Si Do
Salut !


On peut faire plus compact :

for /F %%i in ('dir C:REPRECEPTEURF*.* /B /O:E') do (set dernier=%%i)
copy C:REPRECEPTEUR%dernier% C:REPDESTTOTO.TXT

Mais il faut alors répéter le nom du répertoire récepteur, et il y a de
l'affichage inutile (pas gênant, si c'est dans une tâche planifiée).

Au fait, pour les tâches planifiées, il y a une alternative (en Batch),
c'est "AT". Taper AT /? pour plus de détails.


@-salutations

Michel Claveau
Avatar
LE TROLL
Mes très chers amis, camarades,

Je réponds dans une question préalablement formulée, ce qui donc, ne
dérange pas le forum, et je répond évidemment parce que je suis cité...

Ce poste hors sujet provient d'un mvp de Microsoft, scraper. Mais bon, il
est mvp de forums obscures de bidouilles, pas d'un forum de programmation, il ne
sait pas programmer...

Dites-moi, est-ce normal qu'un mvp qui n'est pas de ce forum d'ailleurs,
procède ainsi, n'est-ce pas plus grave que de mettre ses question en entête,
n'est-ce pas inadmissible, n'allez-vous pas massivement protester?
Et ben non, vous n'allez rien dire, car entre camarades gauchistes on applique
la justice du petit père des peuples, le procès stalinien, je connais, j'ai
l'habitude, mais vous allez pouvoir néanmoins contempler votre propre turpitude,
en me faisant plein de reproches pour des détails d'écriture, alors que celui
qui devrait faire respecter (mvp) et qui souille ce forum, n'aura jamais autant
de récriminations, normal c'est un gauchiste, il est dans son milieu, j'ai bien
compris le jeu :o)

Que dire encore, à part que ne sachant pas rapidement avec le bloc-notes
faire un texte pour répondre proprement avec un lien sur Internet (oui, c'est un
sous-mvp), il a néanmoins voulu faire comme moi, publier mes questions et
réponses, alors il le fait là! Comment peut-il se plaindre du fait que j'écris
en haut, et faire ça après?
Je sais, comme c'est un gauchiste vous ne direz rien, mais ça ne me dérange pas,
c'est la preuve que vous être intellectuellement au moins, malhonnêtes, et que
j'ai raison, votre silence me donne raison, merci camarades :o)
-----------------------



"---DGI972---" <gilles.dermigny@*NOSPAM*laposte.net> a écrit dans le message de
news:
Bonjour a tous,
Je reçois, sur un pc, un fichier tous les jours (sauf le samedi et le
dimanche).Ce fichier est réceptionné dans un répertoire fixe avec une racine
constante le quantième du jour et une extension numérique selon le numéros
d'ordre d'arrivée (par ex FICH231.554 ;231= quantième du 19/08/2005). Je dois
le recopier ce fichier sur 2 autres pc avec un non fixe.
comment récuperer le fichier en ne sachant pas a l'avance le numéro d'ordre
d'arrivé ?
pour le Quantième j'ai trouvé la formule magique

Voici le début de mon script

Option Explicit
Dim fso, sPath, sFileName, sFile, fileIn, fileOut, QUANT, monshell,
DossierDest1,DossierDest2

DossierDest1 = "192.168.15.156CLIENTSMAR"
DossierDest2 = "97.10.2.10DCLIENTSGUA"
set monshell = WScript.CreateObject("WScript.Shell")
monshell.Run "NET USE "& DossierDest1 &" test /USER:DOMAINE/toto tata",0, true
monshell.Run "NET USE "& DossierDest2 &" test /USER:toto tata",0, true

Set fso = CreateObject("Scripting.FileSystemObject")


QUANTÚte()-DateSerial(Year(Date()),1,1)+1 'fabrication du quantième
if QUANT<10 then QUANT="00"&QUANT
if QUANT<100 then QUANT="0"&QUANT

sPath = "192.168.15.156CLIENTSMAR"
sFileName = "BDFIMP"&QUANT&".*" 'la j'ai un PB
SFile = sPath & sFileName

Set fileIn = fso.GetFile(sFileName)'la j'ai un PB
fileIn.Copy "192.168.15.156CLIENTSMARIMPIMPBAFIC"
fileIn.Copy "97.10.2.10DCLIENTSGUAIMPIMPBAFIC"

Je compte mettre se Script dans le planificateur de tâche tous les matin des
jours de la semaine.

Merci d'avance pour vos conseils




Avatar
scraper
Bonjour LE TROLL, dans le message
news:%
tu disais :


que des kon***, comme d'hab'

désolé pour le HS, mais je réponds à Machin ....

je sais pas ce que tu espères prouver ce faisant ?

quant à moi, je pense avoir apporté la preuve *éclatante* que le nuisible,
ici, n'est autre que toi :
la preuve, sur d'autres forums que ni moi ni mes "copains gauchistes" (sic
!) ne fréquentons, tu retombes dans les mêmes travers, tu adoptes les mêmes
comportements irespectueux et insultants

au surplus, sache que s'immiscer ainsi dans une question (un thread) comme
tu l'as fait, sans aucun rapport avec la question, est extrêmement impoli,
et c'est assimilé à couper la parole à quelqu'un qui parle
(mais ça, je suppose que c'est l'une de tes exquises habitudes, dans la
vraie vie ;-)

note que dans mon cas, ce n'est pas pareil, hein ;-)
je te réponds, et en outre, je préviens les éventuels lecteurs ....


mon pauvre gars, tu es vraiment définitivement grillé ;-)


et un peu de lecture (que tu affectionnes tant) pour finir


http://www.giromini.org/usenet-fr/repondre.html


à très bientôt ...



--

Adresse invalide
Merci de répondre sur le forum ...
http://scraper.chez.tiscali.fr

scraper
Avatar
---DGI972---
Fred a utilisé son clavier pour écrire :
Dans : news:,
---DGI972--- disait :

Bonjour a tous,


Bonjour Gilles,

Je vois que Michel t'as donné une solution très élégante et très compacte en
batch.
Donc je ne renchérit pas en vbs.
Et ton problème de spooler ? As-tu finalement réussi à faire la dernière
modif ?
Plus de nouvelles depuis un mois :-)


Salut Fred,
Vacances oblige, me revoilà.
Le traitement du fichier Spool avance sérieusement, mais avant de
partir en congés ils ont fait un trie et je m'était trompé dans la
longueur du N° de client. Conclusion, il m'ont laissé les 15 000
fichiers erronnés et ils ont refaient les 15 fichiers correctes et ils
m'ont laissé le "bébé".J'ai du comparer à la main un a un (donc 30 000)
les fichier pour voir lesquels qui n'a pas été traités.J'en ai eu pour
3 jours de boulot et des douleurs terribles au poignet et dans les
yeux.
J'ai recommencé hier un nouveau fichier et il semnblerait que cela soit
correcte.j'ai changé la un peu la structure des fichiers de sortie avec
des "_" et forcé le code postal avec des 0 si il n'existait pas
exemple:
SGED_01_0000_12345678901.
Cela me permet de mieux analyser la sortie.Il reste aussi a faire la
ménage et a améliorer l'interface.

Encore Merci.
Gilles


Avatar
Fred
Dans : news:,
---DGI972--- disait :

Salut Fred,


Salut !

Vacances oblige, me revoilà.
Le traitement du fichier Spool avance sérieusement, mais avant de
partir en congés ils ont fait un trie et je m'était trompé dans la
longueur du N° de client. Conclusion, il m'ont laissé les 15 000
fichiers erronnés et ils ont refaient les 15 fichiers correctes et ils
m'ont laissé le "bébé".J'ai du comparer à la main un a un (donc 30
000) les fichier pour voir lesquels qui n'a pas été traités.J'en ai
eu pour 3 jours de boulot et des douleurs terribles au poignet et
dans les yeux.


Il y a mieux comme retour de vacances !

J'ai recommencé hier un nouveau fichier et il semnblerait que cela
soit correcte.j'ai changé la un peu la structure des fichiers de
sortie avec des "_" et forcé le code postal avec des 0 si il
n'existait pas exemple:
SGED_01_0000_12345678901.
Cela me permet de mieux analyser la sortie.Il reste aussi a faire la
ménage et a améliorer l'interface.


Bon, n'hésite pas à reposter en cas de difficultés. Cela vaut quand même
la peine d'y passer un peu de temps.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
---DGI972---
Le 20/08/2005, Fred a supposé :
Dans : news:,
---DGI972--- disait :

Salut Fred,


Salut !

Vacances oblige, me revoilà.
Le traitement du fichier Spool avance sérieusement, mais avant de
partir en congés ils ont fait un trie et je m'était trompé dans la
longueur du N° de client. Conclusion, il m'ont laissé les 15 000
fichiers erronnés et ils ont refaient les 15 fichiers correctes et ils
m'ont laissé le "bébé".J'ai du comparer à la main un a un (donc 30
000) les fichier pour voir lesquels qui n'a pas été traités.J'en ai
eu pour 3 jours de boulot et des douleurs terribles au poignet et
dans les yeux.


Il y a mieux comme retour de vacances !

J'ai recommencé hier un nouveau fichier et il semnblerait que cela
soit correcte.j'ai changé la un peu la structure des fichiers de
sortie avec des "_" et forcé le code postal avec des 0 si il
n'existait pas exemple:
SGED_01_0000_12345678901.
Cela me permet de mieux analyser la sortie.Il reste aussi a faire la
ménage et a améliorer l'interface.


Bon, n'hésite pas à reposter en cas de difficultés. Cela vaut quand même la
peine d'y passer un peu de temps.


Merci pour l'acceuil, je n'y manquerais pas.


Avatar
Jacques Barathon [MS]
"Do Re Mi chel La Si Do" wrote in message
news:u%
Bonjour !

C'est très facile. Inutile de se lancer dans un truc bien compliqué, avec
du VBscript, du WSH, et Cie.

Un simple script (.BAT) permet de le faire.


Voici un exemple :

@echo off
cd REPRECEPTEUR
for /F %%i in ('dir F*.* /B /O:E') do (set dernier=%%i)
copy %dernier% C:REPDESTTOTO.TXT


Euh, le tri /o:e ne marche pas si tu vas au-delà de 10 fichiers car le tri
est purement alphabétique et non pas numérique. Par exemple, applique la
commande "dir /b /o:e" aux fichiers suivants (ci-dessous triés numériquement
selon leur extension):

test1.1
test1.2
test1.12
test1.15
test1.123

Tu obtiens le résultat suivant:

test1.1
test1.12
test1.123
test1.15
test1.2

Il est peut-être possible de passer par des fonctions avancées de
l'interpréteur de commandes NT que je ne connais pas, mais à mon sens il
vaut mieux utiliser un simple algorithme de tri en vbs qui convertira les
extensions de texte à numérique.

Jacques

Avatar
---DGI972---
Do Re Mi chel La Si Do avait prétendu :
Salut !


On peut faire plus compact :

for /F %%i in ('dir C:REPRECEPTEURF*.* /B /O:E') do (set dernier=%%i)
copy C:REPRECEPTEUR%dernier% C:REPDESTTOTO.TXT

Mais il faut alors répéter le nom du répertoire récepteur, et il y a de
l'affichage inutile (pas gênant, si c'est dans une tâche planifiée).

Au fait, pour les tâches planifiées, il y a une alternative (en Batch), c'est
"AT". Taper AT /? pour plus de détails.


@-salutations

Michel Claveau


Bonjour,
J'ai comme message:
%%1 était inattendu ?????
Au secours !!!!!

1 2