IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Parcourir des fichiers différents dossier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Par défaut Parcourir des fichiers différents dossier
    Bonjour à tous,

    J'ai écris un batch qui me permet de récupérer des données sur un FTP, ces données dont envoyés de façon régulière.
    Je rencontre actuellement un soucis, je parcours chaque dossier afin de vérifier s'il existe des fichiers, si j'en trouve et qu'il est disponible je le déplace sans un répertoire de travail.
    Mon soucis se situe au moment ou, j'ai un fichier qui en court de copie dans le répertoire, dans ce cas mon programme bloque dessus et ne veut pas passer au dossier suivant alors que je lui demande de le faire via un Goto Next.



    Voici un extrait du code que j'utilise
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    rem =====================================================================================================================
    rem On cherche dans les dossiers et sous dossier du répertoire les fichiers avec une extension .log ou .md5 ou.zip ou ZIP
    rem =====================================================================================================================
     
    for /r %SFTPDIR% %%a in (*.log *.md5 *.zip *ZIP *.txt) do (
     
    rem ================================================================
    rem On increment la variable  à chaque fois qu'un fichier est trouve
    rem ================================================================
     
    	set /a NB_FICHIER+=1
    	set EXTENSION=NONE
     
    rem =============================================================================
    rem Vérification si le fichier est encore en copie, si oui alors on ne touche pas
    rem =============================================================================
     
    	rename "%%a" "%%~na%%~xa" > nul
    	if errorlevel 1 (
    		echo %date% %time% File %%a still in copy	
    		goto NEXT
    	)

    Je vous remercie d'avance pour votre aide.

    Salutations

    Tatan

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je ne vois pas ton étiquette next

    Code cmd : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    goto /?
    Dirige cmd.exe sur une ligne étiquetée dans le programme de commandes.
    
    GOTO nom
    
      nom   Chaîne utilisée en tant que nom dans le programme de commandes.
    
    Les noms sont seuls sur une ligne et commencent par le signe ':'
    
    Si les extensions de commandes sont activées, GOTO est modifié comme suit :
    
    La commande GOTO accepte maintenant l’étiquette cible :EOF, qui transfère le
    contrôle à la fin du fichier de commande en cours. C’est un moyen pratique de
    sortir d’un fichier de commande sans y définir de nom de sortie. Entrer
    CALL /? pour avoir une description des extensions de la commande CALL qui
    rendent cette fonctionnalité utile.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Par défaut
    Vous trouverez ci joint le code complet en question.

    Pour illustrer ma demande, ci dessous une vue de mon arborescence de dossier pouvant contenir des fichier déjà chargé et ou des fichiers en cours de chargement.Nom : Vue Serveur.PNG
Affichages : 1792
Taille : 9,1 Ko

    Le but est que si j'ai un fichier en cours de chargement dans un dossier alors dans ce cas je passe au dossier suivant afin de récupérer les fichiers déjà présent.

    Une autre question, vous utilisez quoi pour écrire vos codes en batch ? Perso j'utilise Notepad ++

    Merci d'avance pour votre aide
    Fichiers attachés Fichiers attachés

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Que veux dire "un fichier en cours de chargement dans un dossier" ?

    J'utilise notepad, notepad++ ou vscode

    Ps : Ton code est très long et tellement verbeux que je n'arrive pas à lire le code.
    Si tu peux simplifier ton problème je te laisserait implémenter la solution si on la trouve

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 15
    Par défaut
    Citation Envoyé par ericlm128 Voir le message
    Que veux dire "un fichier en cours de chargement dans un dossier" ?

    J'utilise notepad, notepad++ ou vscode

    Ps : Ton code est très long et tellement verbeux que je n'arrive pas à lire le code.
    Si tu peux simplifier ton problème je te laisserait implémenter la solution si on la trouve

    Par en cours de chargement, je veux dire que j'ai des systèmes qui envoie des données de façon régulière sur un sftp, et que lorsqu'il envoie le fichier n'est pas dispo car en cours de chargement dans le SFTP.

    Pour le code long je peux voir pour retirer certaines parties, tu trouveras ci joint une version simplifier.
    Que veux tu dire par Verbeux ?
    Si tu as des conseils je suis preneur, je t'avouerai que j'ai appris le Batch sur le tas ....

    Merci pour ton retour.
    Fichiers attachés Fichiers attachés

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Bêtement je dirais ceci

    C'est ceci qui te permet de savoir si le fichier est en cours de copie ?!
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    rename "%%a" "%%~na%%~xa" > nul
    		if errorlevel 1 (

    Donc faire le traitement si il ne l'ai pas (ELSE)


    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    @echo off
    chcp 1252 > nul
     
    rem	=======================================================================================================================================================================================
    rem
    rem						SCRIPT DE LANCEMENT DU PROGRAMME POUR CONVERSION ET TRANSFERE DES DONNEES FLOTTE TRACTEUR
    rem			
    rem		Author: 	J.FERLIER
    rem		Versions:	1.0 	-	12/11/19 	-	First draft
    rem					1.1		-	13/11/19	-	Deplacement des fichiers csv et asc vers répertoire spécifique
    rem					1.2		-	13/11/19	-	Convertion automatique des fichiers IPETRONIK via IPCONVERTER
    rem					1.3		-	14/11/19	-	Fonction de traitement de données si données temporelle ou CAN
    rem					1.4		-	05/12/19	-	Fonction pour ouvrir le fichier contennant la macro excel
    rem					1.5		-	28/01/20	- 	Ajout des fonctions de dezippage des données + transfére des données
    rem 				1.6		-	10/02/20	-	Ajout des fonctions permettant le transfert des données vers Automation
    rem 				1.7		-	23/04/20	-	Récupération de l'état de l'erreur lors du dezpippe des fichier et suppression des fichiers corrompu
    rem					1.8		-	14/05/20	-	Modification du code pour récpération des droits des fichiers BLF, MF4 et IAD (LA fonction move ne permet pas de récupèrer les droits du dossier parent
    rem					1.9		-	25/05/20	-	Modification du batch pour traitement des fichiers BIN et DAT provenant des IPFLEETLOG2
    rem 				2.0		-	19/10/20	- 	Modification du code pour le rendre compatible avec les fichiers *.dxd, ajout d'un boucle sur le serveur FTP IPETRONIK436
    rem 				2.1		-	26/11/20	-	Ajout des fonctions permettant de traiter les fichiers des modules IPE RT (fichier ziprt et MEA.ziprt
    rem 				2.2		-	30/06/21	-	Correction du traitement des fichiers ZIPRT pour la partie temporelle
    rem					2.3		-	15/07/21	-	Ajout du traitement des fichiers video pour les logger RT
    rem	=======================================================================================================================================================================================
     
    rem ===============================================
    rem Permet de donner un nom à la fenetre d'excution
    rem ===============================================
     
    title Batch transfert FTP vers GATEWAY IPETRONIK
     
    rem ==========================
    rem Affectations des variables
    rem ==========================
     
    	rem ==============================
    	rem Variable pour le développement
    	rem ==============================
     
    set FTPDIR="C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\FTP\PDC"
    set DIRCONVERSION="C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Conversion"
    set SFTPDIR="C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\SFTP\Data"
    set ACONVERTIR=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Conversion
    set RENOMMER="C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Renomage\"
    set ARENOMMER=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Renomage
    set GATEWAYDIR="C:\Users\jferlier\OneDrive\Automation\Simulation Serveur\Gateway\"
    set ELECDIR=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Electronique
    set EACDIR=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Mesure EAC
    set INDICATEUR=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Indicateur\Event
    set ARCHIVEDIR=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Archive
    set ZIPDIR=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\ZIP
    set FICHIER=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Envoie Fichier PDC
    set AENVOYER=C:\Users\jferlier\OneDrive\Suivi Flotte Tracteur\Test Programme\Fichier_A_Envoye
     
     
    	rem =====================
    	rem Variable pour commune
    	rem =====================
     
    set TEMPORELLE=0
    set CAN=0
    set ZIPFILE=0
    set LOGFILE=0
    set EXTENSION=NONE
    set ACTIVITE=NONE
    set BANC=NONE
    set DXD=0
    set CopieDXDfini=0
    set FichierPresent=0
    set Event=0
    set Mesure=0
    set EXTENSION_VIDEO=*avi
     
     
    rem ===========================================
    rem Indication de l'initialisation du programme
    rem ===========================================
     
    echo %date% %time% Initialisation du programme
     
    rem =======================================
    rem Permet de fonctionner en variable local
    rem =======================================
     
    setlocal enabledelayedexpansion
     
    rem =======================
    rem		2	-	SEARCH LOOP
    rem =======================
     
    :LOOP
     
    rem ===================================
    rem Attente de 2s avant nouvelle boucle
    rem ===================================
     
    timeout /T 2 > nul
     
    rem =================================================================================================================================================================================================================================
    rem 													Partie du programme pour Suivi Flotte Tracteur
    rem =================================================================================================================================================================================================================================
     
     
    rem =====================================================================================================================
    rem On cherche dans les dossiers et sous dossier du répertoire les fichiers avec une extension .log ou .md5 ou.zip ou ZIP
    rem =====================================================================================================================
     
    	for /r %SFTPDIR% %%a in (*.zip) do (
     
    rem ================================================================
    rem On increment la variable  à chaque fois qu'un fichier est trouve
    rem ================================================================
     
    		set /a NB_FICHIER+=1
    		set EXTENSION=NONE
     
    rem =============================================================================
    rem Vérification si le fichier est encore en copie, si oui alors on ne touche pas
    rem =============================================================================
     
    		rename "%%a" "%%~na%%~xa" > nul
    		if errorlevel 1 (
    			echo %date% %time% File %%a still in copy	
    			rem goto NEXT
    		)
    		else
    		(
    rem ===========================================================================
    rem En fonction de l'extension du fichier on on change la valeur de la variable
    rem Ceci sera utilisé lors des fonctions de déplacement de fichier
    rem ===========================================================================
     
    			for /f %%b in ("%%~xa ") do (
     
    				if %%b==.zip set ZIPFILE=1
     
     
    rem ================================================================================
    rem On découpe le nom du fichier afin de connaitre le numéro de série du logger
    rem Ceci servira à connaitre ou envoyer les informations sur le répertoire du logger
    rem ================================================================================
    		rem pour v final for /f "tokens=5 delims=\" %%b in ("%%a") do ( pour version dev 9
     
    				for /f "tokens=9 delims=\" %%b in ("%%a") do (
    					set SN_Logger=%%b
    				)
     
    rem ================================================
    rem On indique le chemin du fichier dans la variable
    rem ================================================
     
    					set CHEMIN_FICHIER_ARCHIVE="%ARCHIVEDIR%\!SN_Logger!"
     
    rem =====================================================================================================
    rem On vérifie si le dossiers Numero de serie existe dans le dossier Archive, sinon on crée le répertoire
    rem =====================================================================================================
     
    					if not exist !CHEMIN_FICHIER_ARCHIVE! mkdir !CHEMIN_FICHIER_ARCHIVE!
     
    			)
    		)
    	)
     
     
     
     
    	:AUCUNFICHIER
     
    	echo %date% %time% Recherche de nouveau fichier
     
    	:NEXT
     
    goto LOOP
     
    goto :eof
     
    endlocal

Discussions similaires

  1. parcourir des fichiers excel situés dans un dossier
    Par souhail77 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/03/2017, 20h09
  2. Parcourir et sélectionner des fichiers et dossiers
    Par diabolokev dans le forum C#
    Réponses: 17
    Dernier message: 14/01/2013, 20h51
  3. Droit des fichiers et dossier
    Par Blo0d4x3 dans le forum Linux
    Réponses: 1
    Dernier message: 15/04/2007, 15h59
  4. Réponses: 1
    Dernier message: 30/11/2006, 11h01
  5. gestion des fichiers et dossiers avec FTP
    Par ahmeds dans le forum Réseau/Web
    Réponses: 3
    Dernier message: 12/10/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo