Aller au contenu

Script transfert sFTP en Batch


Squall NTCK

Messages recommandés

Bonjour à tous,

j'ai un petit soucis, je dois faire un script qui récupère des fichiers sur un serveur SFTP, et une fois ceux ci récupérer je dois les effacer du serveur sFTP distant.

La récupération des fichiers fonctionne et mes fichiers sont stockés dans un dossier transfer, je dois maintenant, supprimer du serveur les fichiers déjà téléchargés

J'ai donc fait une boucle mais je pense que cela ne fonctionne pas

@echo ---------- Transaction du %date% %time%  ---------------  >> %logFile%
dir %transferFolder% >>%ListFichier%
rem Transfert Terminé
cd %transferFolder%
:: Boucle pour supprimer chaque fichier déjà téléchargé


:FileDelLoop
for %fileName "tokens=*"  in  ('%transferFolder%/*.*') do goto FileDel

echo %nbTransferFile%

pause

echo Fin De programme

:FileDel
%connexionSFT% %fileName% >> %logFileDel%

goto FileDelLoop


Pourriez vous m'aider

D'avance :merci:

Lien vers le commentaire
Partager sur d’autres sites

J'y connais pas des masses en script dos, je risque de dire des conneries.

Tu recommencerais pas ta boucle à chaque fois avec tes goto ?

Le goto FileDel sort de la boucle à mon avis, et quand tu reviens avec le goto FileDelLoop tu relances la boucle.

Tu pourrais faire ça :

for %fileName "tokens=*"  in  ('%transferFolder%/*.*') do script_qui_supprime.bat %fileName%

pause

echo Fin De programme

avec un script_qui_supprime.bat qui fait le boulot.

Lien vers le commentaire
Partager sur d’autres sites

Je pense que tu as raison.

la commande que tu me donnes ne fonctionnes pas non plus :craint:

j'ai essayé ça

for %transferFolder% in (*.*) do pause

mais il ne fait rien (et encore moins de pause). La variable transferFolder contient le chemin du dossier dans lequel se trouve les fichiers que je souhaite lister.<br><br> Je me base sur le tutoriel Ici

voici ce que je peux lire

Exécuter une commande pour un jeu de fichiers

La syntaxe générale est celle-ci :

For {%variable|%%variable} in (jeu) do commande [Options_Ligne_Commande] 

Prenons tout d'abord un exemple... Si nous souhaitons afficher le contenu de tous les fichiers .txt et .doc du répertoire courant, nous saisirons :

for %1 in (*.doc *.txt) do type %1

Signalons que la variable peut être un chiffre ou une lettre (par exemple, %a fait aussi bien l'affaire).

Astuce : Si nous utilisons cette commande dans un fichier de commande le signe % doit être redoublé.

Jeu représente les noms de fichiers et doit être placé entre parenthèses.

Les mots clés in et do sont possibles lors de l'utilisation de la commande "For". Nous pouvons les traduire par ceci : Pour tous les fichiers présents dans (in) ce jeu de fichiers exécute (do) cette commande. Il vous est possible d'utiliser les paramètres spécifiques à chaque commande (Options_Ligne_Commande).

Une manière de lister les noms seuls des fichiers exécutables du répertoire courant est de saisir :

            	for %a in (*.exe) do @echo %a 

La simple liste de tous les fichiers (à l'exception des répertoires) s'obtient en saisissant :

 for %a in (*) do                  @echo %a 

<br><br><br>en tout cas :merci: pour l'aide<br>
Lien vers le commentaire
Partager sur d’autres sites

Essayes ça (dans un fichier)

cd %transferFolder
for %%file in (*.*) do echo %file

Oo, j'ai essayé en ligne de commande, il ne prend pas les variables de plusieurs lettres...

for %file in (*.*) do echo %file

--> marche pas

for %l in (*.*) do echo %l

--> marche

cd %transferFolder
for %%f in (*.*) do echo %f

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...