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

  • Votes
  • Date
  • Date décroissante
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. Je n'est pas bien compris ta réponse dubcek
    1. et bien il marche tjr pas mon script meme avec la modif que tu m'a dis de faire
  2. Contributeur
    if faut
    xcopy "\\Domaine\DC_Informatique\Modeles_Newsletter\test.htm" "C:\Documents and Settings\%userprofile%\Application Data\Microsoft\Papier à lettres" /y /c
    1. salut

      une petite remarque :

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

      et pas comme vous l'aviez écrire !!
      1. le userprofile c'est que le script sera un script douverture de session sur un serveur windows 2003
      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

    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
      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
      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
      3. Re,

        mais vous tappez PAUSE aprés la commande GOTO COPY_HTM
        par contre j'ai fait l'inverse
      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
      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
    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) ? 
      1. j'ai mis "r" mais rien ne c'est copier (T_T)
      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
      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
      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 ?
    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)
      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
      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
      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.
      4. ok mais c'est pas ce que je veux moi
      5. Contributeur
        utiliser copy plutôt que xcopy