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 :

Déplacer des fichiers commençant par les mêmes deux premières lettres. [Batch]


Sujet :

Scripts/Batch

  1. #1
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Avril 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Déplacer des fichiers commençant par les mêmes deux premières lettres.
    Bonjour,
    je précise que je suis novice, sur ce forum, et en programmation (quelques restes scolaires et un peu de macro excel, c'est à peu près tout).

    Mon réseau est lent est je travaille avec des gros fichiers, sur mon bureau.
    Je souhaite faire une sauvegarde de mes dossiers de travail, situés sur le bureau, vers le réseau, tous les soirs.
    Mon plan :
    - coder une sauvegarde automatique
    - l'ajouter dans les tâches planifiées windows 10.
    Pour l'instant, j'en suis à la première étape.

    J'ai fait une peu de recherche, et lu (un peu) des cours en ligne, et vos forums.
    J'ai fait un premier fichier sauv.bat, dont le code est ci-dessous. Je me suis orienté sur robocopy /mir.
    En cas de boulette (suppression accidentelle d'un fichier...), j'ai codé pour avoir 3 jours de sauvegarde. Il fait 3 sauvegardes, la 2 écrase la 3, la 1 écrase la 2, les dossiers à sauvegarder du bureau devienne la 1.
    Sur le bureau, j'ai divers objets (fichiers, dossiers, raccourcis). Mes dossiers en cours, à sauvegarder, ont un nom qui commence par les mêmes premières lettres : "19" comme 2019. Et après, leur nom a un numéro incrémenté et un descriptif.
    Ex: "1976004 Client - Telle opération"

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    robocopy "\\Chemin réseau\Sauvegarde2" "\\Chemin réseau\Sauvegarde3" /mir /xo
    robocopy "\\Chemin réseau\Sauvegarde1" "\\Chemin réseau\Sauvegarde2" /mir /xo
    robocopy "C:\Mon identifiant\Desktop\19*" "\\Chemin réseau\Sauvegarde1" /mir /xo /COPYALL

    Et bien ça marche !
    Qu'est-ce que je fais là alors ?

    Cela n'a marché qu'une fois.
    Le dossier \\Chemin réseau\Sauvegarde1 contient bien les dossiers commençant par "19". Idem pour sauvegarde 2 et 3 après plusieurs lancements.
    Mais depuis, j'en ai déplacé certains (travail fini) et créer d'autres (nouveau travail), toujours commençant par "19". Et je ne retrouve pas les nouveaux dans Sauvegarde1. Et les anciens sont toujours là.
    J'ai observé, après avoir lancé mon sauv.bat dans une fenêtre de commande (merci les forums), que les deux premières sauvegardes 2->3 et 1->2 fonctionnent bien, mais que la troisième annonce ce bug :
    ERREUR : paramètre non valide #1 : "C:\Mon identifiant\Desktop\19*"
    Le problème viendrait de mon 19* ? Je ne sais même pas si c'est "autorisé" d'utiliser * dans les noms de dossiers...
    Pourquoi est-ce que ça n'aurait marché qu'une fois ?
    Comment contourner le problème ? J'ai pensé à du if...goto...
    du type :
    nom_dossier = chacun des dossiers du bureau un à un
    If nom_dossier commence par 19, goto copier ce dossier sur sauvegarde1

    Avez-vous une explication au bug ? Du coup peut-être une solution ?
    Sinon, pouvez-vous m'aider sur une solution de code ?
    J'ai vu qu'on pouvait utiliser des tokens et autres boucles... mais là je commence à parler de ce que je ne connais pas du tout... alors je m'arrête là !

    Merci d'avance pour votre aide.
    Pimus.

  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 : 44
    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,

    Essaie comme ça :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    robocopy "\\Chemin réseau\Sauvegarde2" "\\Chemin réseau\Sauvegarde3" /mir /xo
    robocopy "\\Chemin réseau\Sauvegarde1" "\\Chemin réseau\Sauvegarde2" /mir /xo
     
    for /f "delims=" %%A in ('dir /b /ad "C:\Mon identifiant\Desktop\19*"') do robocopy "%%~dpnA" "\\Chemin réseau\Sauvegarde1\%%~nA" /mir /xo /COPYALL

  3. #3
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Avril 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bonjour,
    merci pour ton aide !

    Après des petites vacances, je me suis repenché sur le sujet.

    Ton code apporte du mieux, merci. Il arrive à passer d'un dossier à un autre.

    Dans un premier temps, je l'ai lancé, il passe bien d'un répertoire à l'autre, mais ne réalise pas la copie, j'ai eu un massage d'erreur disant que je n'avais pas les droit de gestion d'audit.
    ERREUR : vous ne disposez pas du droit de gestion d’audit.
    ***** Il est requis pour copier les informations d’audit (/COPY:U ou /COPYALL).
    J'ai donc supprimé /COPYALL.

    Dans un deuxième temps, il passe bien d'un répertoire à un autre, mais ne réalise pas la copie, car il dit ERREUR2 0x00000002 Le fichier est introuvable.

    Voici l'extrait de CMD, où on voit qu'il passe d'un dossier à l'autre, mais ne trouve pas de fichier à chaque fois.
    Entre les deux premières lignes, on voit déjà qu'il perd "Desktop\" dans l'adresse du dossier source, ce qui expliquerait qu'il ne trouve pas de fichier.
    Mais si c'est ça l'erreur, je ne vois pas comment corriger ton code...
    Merci si tu peux encore m'aider.
    Pimus

    PS. Es-tu mosellan ?

    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
    C:\Mon identifiant>for /F "delims=" %A in ('dir /b /ad "C:\Mon identifiant\Desktop\19*"') do robocopy "%~dpnA" "\\Chemin réseau\Sauvegarde1\%~nA" /mir /xo
     
    C:\Mon identifiant>robocopy "C:\Mon identifiant\197001" "\\Chemin réseau\Sauvegarde1\197001" /mir /xo
     
    -------------------------------------------------------------------------------
       ROBOCOPY   ::   Copie de fichiers robuste pour Windows
    -------------------------------------------------------------------------------
     
      Début*: mardi 23 avril 2019 14:15:01
       Source : C:\Mon identifiant\197001\
         Dest : \\Chemin réseau\Sauvegarde1\197001\
     
        Fichiers : *.*
     
      Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30
     
    -------------------------------------------------------------------------------
     
    2019/04/23 14:15:01 ERREUR 2 (0x00000002) Accès au répertoire source C:\Mon identifiant\197001\
    Le fichier spécifié est introuvable.
     
    C:\Mon identifiant>robocopy "C:\Mon identifiant\197003" "\\Chemin réseau\Sauvegarde1\197003" /mir /xo
     
    -------------------------------------------------------------------------------
       ROBOCOPY   ::   Copie de fichiers robuste pour Windows
    -------------------------------------------------------------------------------
     
      Début*: mardi 23 avril 2019 14:15:01
       Source : C:\Mon identifiant\197003\
         Dest : \\Chemin réseau\Sauvegarde1\197003\
     
        Fichiers : *.*
     
      Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30
     
    -------------------------------------------------------------------------------
     
    2019/04/23 14:15:01 ERREUR 2 (0x00000002) Accès au répertoire source C:\Mon identifiant\197003\
    Le fichier spécifié est introuvable.
     
    C:\Mon identifiant>robocopy "C:\Mon identifiant\197601 - 15" "\\Chemin réseau\Sauvegarde1\197601" /mir /xo
     
    -------------------------------------------------------------------------------
       ROBOCOPY   ::   Copie de fichiers robuste pour Windows
    -------------------------------------------------------------------------------
     
      Début*: mardi 23 avril 2019 14:15:01
       Source : C:\Mon identifiant\197601\
         Dest : \\Chemin réseau\Sauvegarde1\197601\
     
        Fichiers : *.*
     
      Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30
     
    -------------------------------------------------------------------------------
     
    2019/04/23 14:15:01 ERREUR 2 (0x00000002) Accès au répertoire source C:\Mon identifiant\197601\
    Le fichier spécifié est introuvable.
     
    C:\Mon identifiant>robocopy "C:\Mon identifiant\197603 - 13" "\\Chemin réseau\Sauvegarde1\197603" /mir /xo
     
    -------------------------------------------------------------------------------
       ROBOCOPY   ::   Copie de fichiers robuste pour Windows
    -------------------------------------------------------------------------------
     
      Début*: mardi 23 avril 2019 14:15:01
       Source : C:\Mon identifiant\197603\
         Dest : \\Chemin réseau\Sauvegarde1\197603\
     
        Fichiers : *.*
     
      Options : *.* /S /E /DCOPY:DA /COPY:DAT /PURGE /MIR /XO /R:1000000 /W:30
     
    -------------------------------------------------------------------------------
     
    2019/04/23 14:15:01 ERREUR 2 (0x00000002) Accès au répertoire source C:\Mon identifiant\197603\
    Le fichier spécifié est introuvable.

  4. #4
    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 : 44
    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
    Oui je suis mosellan, je suis dans le secteur d'Amnéville

    Bizarre qu'il ne travaille pas dans le bon dossier, si tu veux récupérer des fichiers sur ton bureau le chemin c'est plutôt ça : C:\Users\Mon identifiant\Desktop ou encore mieux : %USERPROFILE%\Desktop

  5. #5
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Avril 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    J'ai grandi à La Maxe, et allais souvent à Amnéville
    J'habite maintenant en Isère

    Derrière les mots "Mon identifiant" que j'ai utilisé sur le forum, il y a bien "Users\Pimus5738" dans mon script.
    De même, derrière les mots "Chemin réseau", il y a bien tout le chemin réseau.
    J'ai caché ça par commodité, et faire des messages plus lisibles.

    À l'exécution du script, on voit ces deux premières lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    C:\Users\Pimus5738>for /F "delims=" %A in ('dir /b /ad "C:\Users\Pimus5738\Desktop\19*"') do robocopy "%~dpnA" "\\Chemin réseau\Sauvegarde1\%~nA" /mir /xo
    
    C:\Users\Pimus5738>robocopy "C:\Users\Pimus5738\197001" "\\Chemin réseau\Sauvegarde1\197001" /mir /xo
    La première ligne est celle codée avec "delims" que tu m'as donnée.
    À la deuxième ligne, il commence la sauvegarde avec le premier dossier , mais a perdu un "niveau d'arborescence" : \Desktop (là où j'ai mis en gras).

    Du coup, c'est sûrement pour ça qu'il ne trouve pas de fichier à copier.

    Dans la première ligne, je ne connais pas "delims", mais l'instruction "dossier source" donnée à robocopy est "%~dpnA". Y'a-t-il moyen de corriger pour qu'il ne "monte" pas d'un niveau d'arborescence ?

    Je dirais qu'on est pas loin...

  6. #6
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Avril 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Je viens de voir un truc.

    Dans le fichier batch, la ligne de code est celle-ci :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%A in ('dir /b /ad "C:\Users\Pimus5738\Desktop\19*"') do robocopy "%%~dpnA" "\\Chemin réseau\Sauvegarde1\%%~nA" /mir /xo


    À l'exécution dans CMD, elle devient ceci :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    C:\Users\Pimus5738>for /F "delims=" %A in ('dir /b /ad "C:\Users\Pimus5738\Desktop\19*"') do robocopy "%~dpnA" "\\Chemin réseau\Sauvegarde1\%~nA" /mir /xo

    Tous les "%%" sont changés en "%"
    Cela pourrait-il venir de là ?

    Attention, je rappelle que je suis une buse, je ne veux pas t'amener sur fausse piste...

  7. #7
    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 : 44
    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
    Non ce n'est pas à cause des doubles %%, dans un script tu doubles les %% mais dans la console tu n'en mets qu'un seul, c'est normal.

    Si DIR ne veut pas travailler dans le bon dossier, on va le forcer :

    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /d "%USERPROFILE%\Desktop"
    for /f "delims=" %%A in ('dir /b /ad "19*"') do robocopy "%%~dpnA" "\\Chemin réseau\Sauvegarde1\%%~nA" /mir /xo

  8. #8
    Candidat au Club
    Homme Profil pro
    particulier
    Inscrit en
    Avril 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : particulier

    Informations forums :
    Inscription : Avril 2019
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    ça marche !!!!!




    et pour une raison inconnue, la solution 2 marche aussi maintenant, avant que tu ne forces dir à travailler dans le bon dossier.

    Merci beaucoup !!!

    C'est très clair que je n'y serai pas arrivé sans toi.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/06/2015, 17h31
  2. Parcourir des tables commençant par le même nom
    Par hugo59330 dans le forum Macro
    Réponses: 8
    Dernier message: 03/09/2013, 11h28
  3. déplacer des fichiers selectionnés par egrep
    Par ben.IT dans le forum Administration système
    Réponses: 5
    Dernier message: 28/03/2009, 17h07
  4. Réponses: 6
    Dernier message: 19/06/2007, 00h55
  5. Définir les droits des fichiers créés par Azureus
    Par sir_gcc dans le forum Applications et environnements graphiques
    Réponses: 2
    Dernier message: 20/05/2007, 15h00

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