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 :

Deplacer des fichiers par paquet


Sujet :

Scripts/Batch

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Deplacer des fichiers par paquet
    Bonjour,

    Je viens vers vous car je suis bloqué, ce script fonctionne bien sous Windows 10 Pro mais ne fonctionne pas sous Windows Serveur 2012 R2.
    Le blocage ce fait après le 1er "for" la console reste ouverte(un bouclage) sous 2012 alors que Windows 10 il se termine.

    - Le principe du scripte doit aller dans le dossier "C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF" prendre x fichier (ici pour mes tests 4).
    - Copier dans "C:\DESTINATION" ces x fichier (ici pour mes tests 4).
    - Puis retournée dans "C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF" prendre x fichier (ici pour mes tests 4 pour les déplacer dans "C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF\REPRIS".

    Si quelqu'un a une solution car je ne voit ou je me suis tromper et pourquoi cela bloque.

    Code : 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
    @echo off
    rem - Le dossier Source ou ce trouve les fichiers
    set SourceDir=C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF
    rem - Le dossier destination
    set DestDir=C:\DESTINATION
    rem - Le dossier destination de control
    set DestDir2=C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF\REPRIS
    rem - Le nombre de fichier que l'on veux copier
    set /A nb_max_files=4
    
    rem - Déplacer les fichiers de SourceDir avec un type de fichier ici les .pdf
    set /A nb_files_move=0
    set /A nb_files_xcopy=0
    rem - xcopy copie les fichier dans un dossier
    for %%f in ("%SourceDir%\*.pdf") do (call :xcopy_one_file "%%f")
    rem - move coupe et colle dans un dossier
    for %%g in ("%SourceDir%\*.pdf") do (call :move_one_file "%%g")
    goto :eof
    
    :xcopy_one_file
    rem - Routine déplaçant un fichier si maximum non atteint
    rem - %1 contient le fichier à déplacer
    if /I %nb_files_xcopy% GEQ %nb_max_files% goto :eof
    COPY  /Y "%~1" "%DestDir%" 1>nul 2>nul
    set /A nb_files_xcopy+=1
    goto :eof
    
    :move_one_file
    rem - Routine coupe et colle un fichier si maximum non atteint
    rem - %1 contient le fichier à déplacer
    if /I %nb_files_move% GEQ %nb_max_files% goto :eof
    move /Y "%~1" "%DestDir2%" 1>nul 2>nul
    set /A nb_files_move+=1
    goto :eof

    Cordialement,
    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur .NET en devenir
    Inscrit en
    Août 2017
    Messages
    546
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET en devenir
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2017
    Messages : 546
    Points : 1 084
    Points
    1 084
    Par défaut
    Bonjour,

    Je ne vois pas de problème majeur, je n'ai pas de windows server 2012 pour tester. J'ai juste corrigé quelques détails :

    Code : 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
    @echo off
    
    rem - Le dossier Source ou ce trouve les fichiers
    set SourceDir=C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF
    
    rem - Le dossier destination
    set DestDir=C:\DESTINATION
    
    rem - Le dossier destination de control
    set DestDir2=C:\E_DOC\DOC_INOTE_A_REPRENDRE\PDF\REPRIS
    
    rem - Le nombre de fichier que l'on veux copier
    set nb_max_files=4
    
    rem - Déplacer les fichiers de SourceDir avec un type de fichier ici les .pdf
    set nb_files_move=0
    set nb_files_xcopy=0
    
    rem - xcopy copie les fichier dans un dossier
    for %%f in ("%SourceDir%\*.pdf") do (call :xcopy_one_file "%%~f")
    
    rem - move coupe et colle dans un dossier
    for %%g in ("%SourceDir%\*.pdf") do (call :move_one_file "%%~g")
    
    exit /b 0
    
    :xcopy_one_file
    rem - Routine déplaçant un fichier si maximum non atteint
    rem - %1 contient le fichier à déplacer
    if %nb_files_xcopy% GEQ %nb_max_files% goto :eof
    COPY /Y "%~1" "%DestDir%" >nul 2>&1
    set /A nb_files_xcopy+=1
    goto :eof
    
    :move_one_file
    rem - Routine coupe et colle un fichier si maximum non atteint
    rem - %1 contient le fichier à déplacer
    if %nb_files_move% GEQ %nb_max_files% goto :eof
    move /Y "%~1" "%DestDir2%" >nul 2>&1
    set /A nb_files_move+=1
    goto :eof

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    Merci barnabe0057 pour tes corrections.
    Mais cela ne fonctionne pas toujours pas sous Windows serveur 2012 il ne veut pas faire l’enchainement sur la 2ème fonction.
    La console reste ouverte(un bouclage).

    J'ai aussi découper le scripte en 3 fichiers .bat, même problème.
    - 1 qui fait l'appel de for copy et move
    - 1 fichier bat copy
    - 1 fichier bat move

    Cordialement
    Bonne journée

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    quel est le nom de tes fichiers .bat ?

    copy.bat
    move.bat

    ???

    Si oui change de nom ! par mon_copy et mon_move.bat


    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci sachadee pour ton aide.

    Cela n'a rien changer toujours le même problème. Il copie bien les fichier en fonction du compteur mais le move.

    Par contre je viens de m'a percevoir que la copie de fait bien mais il ne sort pas du 1er for "copy" pour aller dans le for "move".
    C'est comme s'il parcoure tout le dossier "140 000 fichiers" avant de passé au suivant for.

    Cordialement
    Bonne journée

  6. #6
    Membre habitué
    Homme Profil pro
    007
    Inscrit en
    Octobre 2014
    Messages
    119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : 007

    Informations forums :
    Inscription : Octobre 2014
    Messages : 119
    Points : 188
    Points
    188
    Par défaut
    Citation Envoyé par jcsoram Voir le message
    la copie de fait bien mais il ne sort pas du 1er for "copy" pour aller dans le for "move".
    C'est comme s'il parcoure tout le dossier "140 000 fichiers" avant de passé au suivant for.
    Après que ton nombre max de fichiers a été atteint, tu ne fais rien pour
    sortir de ta boucle, alors le parcours du dossier continu tant qu'il y a des fichiers.

    Par ailleurs, tu ne vérifies à aucun moment la réussite des opérations, le "copy"
    peut échouer, le "move" peut échouer et indépendamment l'un de l'autre.

    Enfin, rien ne garantit que ta deuxième boucle traite les mêmes fichiers que ta
    première, sans compter le gaspillage de ressources, forcément inutile, mais ça,
    c'est une autre histoire.

Discussions similaires

  1. [Regexp] pattern pour trouver des fichiers par exclusion d'extension
    Par mnementh64 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 07/09/2006, 10h34
  2. Trier des fichiers par taille par le VB
    Par tedparker dans le forum Access
    Réponses: 2
    Dernier message: 23/08/2006, 11h59
  3. ouvrire des fichiers par un boucle for
    Par stiko dans le forum C++
    Réponses: 5
    Dernier message: 08/07/2006, 15h14
  4. accès à des fichiers par une japplet
    Par gabest dans le forum Applets
    Réponses: 4
    Dernier message: 27/05/2006, 17h39
  5. Réponses: 1
    Dernier message: 14/02/2006, 00h40

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