Batch pour copier des fichiers

Bonjour à tous!

Voila mon problème, je souhaiterais créer un batch pour qu'il copie des fichiers de mon poste vers celui de mes utilisateurs, seulement je ne sais pas quelle variable intégrer pour qui'il passe le nom du user après Doc and Set.

voilà à quoi il ressemble :

for /F %%i IN (liste.txt) DO copy fichier.zip\\%%i\c$\Documents and Settings\???\Application Data\Microsoft..etc..

qqun peut il m'aider?

d'avance merci

25 réponses

Résumé de la discussion

Un script batch vise à copier des fichiers vers les postes des utilisateurs et cherche quelle variable insérer pour passer le nom d'utilisateur après Documents and Settings. Des propositions utilisent une boucle for sur des noms d'ordinateurs et un chemin UNC \\%%i\c$\Documents and Settings\%%i\..., afin de copier directement dans le profil distant. La solution trouvée consiste à remplacer %USERPROFILE% par %%i, ce qui place le fichier dans le dossier distant adéquat : \\%%i\c$\Documents and Settings\%%i\Application Data\Microsoft\Signatures\. Autre approche consiste à lire un fichier texte avec deux champs séparés par une virgule et à utiliser tokens et delims dans for /f pour mapper machines et utilisateurs.

Bobot (l’IA à votre service)
  1. bonjour
    peut etre en utilisan le %1
    0
    1. Contributeur
      bonjour
      for /F %%i IN (liste.txt) DO copy fichier.zip\\%%i\"%USERPROFILE%\Application Data\Microsoft\"..etc..

      devrait marcher

      pour info fait un set /?
      dans une invite de commande

      0
      1. Merci pour ton aide.

        Mais peux tu etre un tout petit peu plus explicit stp??
        0
        1. Contributeur
          En fait la variable %USERPROFILE% est une variable windows, celle ci en particulier est dépendante de la session utilisateur
          Quand c'est TOTO qui se log %USERPROFILE% retourne C:\Documents and settings\TOTO
          Quand C'est PAUL qui se log, %USERPROFILE% retourne C:\Documents and settings\PAUL

          La commande SET (oui set /? c'est pour l'aide, petite faute de frappe) te retourne les variables windows + les variables que tu as pu créer
          ex
          SET TEMPORAIRE=g:

          puis
          dir %TEMPORAIRE%

          me donne l'arborescence de g: (ma clé usb par exemple)
          0
          1. Merci beaucoup Xavstarblues, mais j'ai une erreur:

            Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.

            Merci encore pour tes interventions!!
            0
            1. Contributeur
              Copie entierement ta ligne de code en erreur stp
              0
              1. Syntaxe du nom de fichier, de répertoire ou de volume incorrecte.
                0 fichier(s) copié(s).

                Avec ceci :
                for /F %%i IN (liste.txt) DO copy fichier.zip\\%%i\"%USERPROFILE%\Application Data\Microsoft\Signatures"

                De plus, du fait que je copie un .zip, saurais tu quelle ligne rajouter pour qu'il se décompresse une fois copié?

                Merci
                0
                1. Contributeur
                  1-mets un espace entre fichier.zip et \\%%i....
                  2-rajoutes un \ apres signature, ca devrait rouler
                  0
                  1. En effet ça roule..

                    Seulement nouveau problème:

                    Le chemin réseau n'a pas été trouvé.
                    0 fichier(s) copié(s).

                    J'imagine que c'est un autre problème...lol

                    Merci
                    0
                    1. Contributeur
                      dans ton batch

                      avant ta boucle mets un
                      ping %%i
                      pause

                      est ce que ca ping bien le poste?
                      0
                      1. Contributeur
                        oups , rajoute le c$ alors....

                        sinon je pense à un truc , ton script s'execute a partir d'ou?

                        0
                        1. A partir d'un dossier sur mon bureau
                          0
                      2. Contributeur
                        arf ca va pas coller alors, le userprofile retourné sera le tien (et pas celui de l'utilisateur sur l'ordi en question)

                        une facon de faire serait de lacher un fichier.bat dans le %ALLUSER%\ (dans le dossier demarrage) de chaque ordi et c'est ce fichier.bat qui viendrai chercher puis decompresser le .zip dans le %USERPROFILE% et ensuite se supprimerai...

                        0
                        1. Contributeur
                          Ok, si tu as un soucis n'hésite pas
                          0
                          1. J'ai trouvé comment faire à partir de mon poste

                            En remplaçant la variable USERPROFILE par %%i

                            Ca marche sauf qua maintnant j'ai une erreur:

                            Erreur d'analyse.

                            ..donc en fait ca amrche pas vraiment.. lol

                            Merci
                            0
                            1. C'est bon j'ai trouvé et tout fonctionne à merveille!!

                              Voici la fin de mon script : "\\%%i\c$\Documents and Settings\%%i\Application Data\Microsoft\Signatures\"

                              J'ai remplacé la variable %USERPROFILE% par %%i ;)

                              Merci encore Xavstarblues.. tu m'as bien aidé ;)

                              ciao!!!
                              0
                              1. Contributeur
                                %%i correspond au nom de l'ordi et au nom d'utilisateur?? (1 user = 1 poste avec son nom?)

                                sinon Ok, c cool
                                0
                                1. C'est ça.

                                  Ce script fonctionne à condition que le nom de machine corresponde au nom du user connecté dessus ;)
                                  0
                                  • 1
                                  • 2