Probleme script .bat

voila je vais etre claire,

Qu'est ce qui ne va pas?

@echo off

rem Copie du modèle de Papier à lettres

:test_htm
if not exist "c:\Documents and Settings\%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm"
goto copy_htm
pause
:copy_htm
xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm C:\Documents and Settings\%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c
goto fin

:fin
exit

7 réponses

Résumé de la discussion

Script batch sous Windows XP vise à copier un modèle de Papier à lettres vers le dossier utilisateur avec une condition if not exist et xcopy. Plusieurs réponses évoquent des problèmes d’espaces dans les chemins et des erreurs de syntaxe liées aux guillemets, à l’emplacement du pause et à l’ordre des commandes. Des corrections portent sur l'encadrement correct des chemins contenant %userprofile%\Application Data\Microsoft\Papier à lettres\test.htm et sur l'usage approprié de xcopy avec guillemets. En cas de persistance, la solution passe par une réécriture nette du flux et des tests intermédiaires afin d’assurer que la copie s’exécute dans le chemin prévu.

Bobot (l’IA à votre service)
  1. Contributeur
    les " du xcopy : xcopy "source" "destination"
    0
    1. Je n'est pas bien compris ta réponse dubcek
      0
      1. et bien il marche tjr pas mon script meme avec la modif que tu m'a dis de faire
        0
    2. Contributeur
      if faut
      xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm" "C:\Documents and Settings\%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c
      0
      1. salut

        une petite remarque :

        le %userprofile% == C:\Documents and Settings\%username%

        et pas comme vous l'aviez écrire !!
        0
        1. le userprofile c'est que le script sera un script douverture de session sur un serveur windows 2003
          0
        2. Re,

          donc , c bon et pour le PAUSE j'ai déja vous donné la manip .

          EDIT:
          :test_htm
          if not exist "c:\Documents and Settings\%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm"
          pause
          goto copy_htm
          :copy_htm
          xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm "C:\Documents and Settings\%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c
          pause
          goto fin

          :fin
          exit

          0
      2. mon probleme c'est qu'il ne copie pas comme je le souhaite
        sa vous avez du vous en douter

        mais en plus je ne peux pas le voir quand il se lance car il ne prend pas en compte les pause du script

        c'est a dire que quand je le lance le script s'ouvre et se ferme directement meme si a la base je lui demande une intervention de ma part
        0
        1. Re,

          ajoutez a la fin de votre fichier de commande la commande pause :

          :test_htm
          if not exist "%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm"
          pause
          goto copy_htm
          :copy_htm
          xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm" "%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c
          goto fin

          :fin
          exit
          0
        2. c'est ce que je dis la commande pause n'est pa pris en compte je l'avais mis mais sa ne marche pas je ne sais pas pourquoi
          0
        3. Re,

          mais vous tappez PAUSE aprés la commande GOTO COPY_HTM
          par contre j'ai fait l'inverse
          0
        4. ok d'accord mais moi que je le mette avant ou après sa ne change rien le pause est pris en compte que si je le met avant la ligne

          if not exist "%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm

          si je le passe après cette ligne la commande n'est plus prise en compte
          mais en soit que ma commande pause ne marche pas c'est pas vraiment un probleme
          ce que je souhaite c'est que la copie que je demande dans le script s'éxecute
          0
        5. Re,

          ah désolé , j'ai remarqué que vous faites une faute dans ta commande :

          if not exist "%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm" echo le chemin 'xiste
          pause
          goto copy_htm
          :copy_htm
          xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm" "%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c
          goto fin

          :fin
          exit
          0
      3. alor voici mon nouveau script:

        @echo off
        
        rem Copie du modèle de Papier à lettres
        
        :test_htm
        if not exist "%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm"echo le chemin existe 
        pause 
        goto copy_htm 
        :copy_htm 
        xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm" "%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c 
        goto fin 
        
        :fin 
        exit 


        et voici ce qu'il m'affiche

         'le' n'est pas recconu en tant que commande interne
        ou externe, un programme éxecutable ou un fichier de commandes.
        Appuyez sur une touche pour continuer... ( la pause marche XD)
        Est-ce que C:\Documents and settings\utilisateur\Application Data\Microsoft\Papier à lettres spécifie un nom de fichier ou un nom de répertoire de la destination (F = fichier, R = répertoire) ? 
        0
        1. j'ai mis "r" mais rien ne c'est copier (T_T)
          0
        2. a excuser moi si si il a marcher mais en faite il ma recrée un repertoire papier a lettre avec le fichier dedans
          0
        3. donc a voir pour modifer quelque petite chose pour qu'il copie la ou j'ai dit et sa sera bon merci beaucoup karivorax
          0
        4. Re,

          pour la 1ère ligne :

          if not exist "%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm" echo le chemin existe

          il ya un espace entre "%userprofile%\Application Data\Microsoft\Papier à lettres\test.htm" et echo le chemin existe
          c pour cela il vous dit que "le" n 'est pas une commande

          et pour la commande XCOPY :

          pourquoi tu met R au lieu de F ?
          0
      4. et bien j'ai mis r car quand je met f rien ne se passe il ne copie pas la ou je veux (je ne sais meme pas si il copie d'ailleur)
        0
        1. sinon un GRAND merci car quand je met r sa crée un dossier avec les fichier a lintérieur donc bon sa c'est pas trop grave merciiiiiii
          0
        2. alors petite correction quand je fais F il me crée un fichier papier Ò lettres et quand je fais R il me fait un dossier papier Ò lettres avec les fichiers que je souhiatait copier a l'intérieur
          0
        3. Contributeur
          help xcopy
          ...
          /I Si la destination n'existe pas et que plus d'un fichier est
          copié, considérer la destination comme devant être un répertoire.
          0
        4. ok mais c'est pas ce que je veux moi
          0
        5. Contributeur
          utiliser copy plutôt que xcopy
          0