[.BAT] Test de guillemet dans une variable

Panov Messages postés 4 Statut Membre -  
Panov Messages postés 4 Statut Membre -
Bonjour,
Je cherche à tester le caractère guillemet et une variable dans un fichier batch. Mon problème est que le caractère étant réservé je n'arrive pas à faire mon test. Voici ci-dessous le morceau de code.
J'ai tout essayé en le doublant (""""), triplant ("""""), avec un (\"), avec un ˆ (ˆ") mais rien n'y a fait jusque la.

REM Vérification si un des caractères du nom de fichier est interdit.
if "%CurrChar%"==""" GOTO :erreur Ca ne fonctionne pas CurrChar est un caractère extrait d'une autre variable
if "%CurrChar%" == "/" GOTO :erreur (OK)
if "%CurrChar%" == "\" GOTO :erreur (OK)
if "%CurrChar%" == "*" GOTO :erreur (OK)
if "%CurrChar%" == "?" GOTO :erreur (OK)
if "%CurrChar%" == "<" GOTO :erreur (OK)
if "%CurrChar%" == ">" GOTO :erreur (OK)
if "%CurrChar%" == "|" GOTO :erreur (OK)
if "%CurrChar%" == ":" GOTO :erreur (OK)
if "%CurrChar%" == " " GOTO :erreur (OK)

Merci pour votre aide.
Configuration: Windows XP
Firefox 3.6

2 réponses

  1. Utilisateur anonyme
     
    C'est une histoire de doublement, je viens de tester :

    SET GUI=""""
    IF %GUI == """" echo guillemet
    IF "%GUI%" == """""" echo guillemet

    fonctionnent
    0
  2. Panov
     
    Voici mon code (Le copier dans un fichier .bat et le lancer). Merci de réessayer en saisissant, à la première question posée, le texte suivant test" ou tout autre texte comportant des guillemets et bien ça ne marche pas. Le code plante à la ligne de test des guillemets.

    C'est peut-être pas codé de manière optimale mais je voulais un truc simple pour une application simple et il me reste plus que ça pour terminer.

    P.S. : Je sais que j'aurais pu utiliser d'autres logiciels pour faire ça mais je voulais

    @ECHO OFF

    :filename

    REM Affiche un message à l'utilisateur l'invitant à entré le nom de fichier txt
    SET /P FileName=Saisir le nom du fichier texte sans espaces, ni caractŠre sp‚ciaux (", /, \, *, ?, <, >, |, :) et sans l'extension ".txt" puis pressez la touche Entr‚e (Tapez EXIT pour sortir):
    REM Saut de ligne
    ECHO.

    if /i "%FileName%" == "EXIT" GOTO :EOF

    REM Initialise la variable Position du caractère à 0
    SET CharPos=0

    :boucle

    REM Extrait un à un les caractères du nom de fichier
    CALL SET CurrChar=%%FileName:~%CharPos%,1%%

    REM Incrémente la variable position caractère pour récupérer le caractère suivant.
    SET /A CharPos=%CharPos%+1

    REM Si le nom du fichier est vide on saute au label erreur
    IF NOT DEFINED FileName GOTO :erreur
    REM Si le caractère est vide on saute au label créer le fichier
    IF NOT DEFINED CurrChar GOTO :create

    REM Vérification si un des caractères du nom de fichier est interdit
    IF "%CurrChar%" == """""" GOTO :erreur
    if "%CurrChar%" == "/" GOTO :erreur
    if "%CurrChar%" == "\" GOTO :erreur
    if "%CurrChar%" == "*" GOTO :erreur
    if "%CurrChar%" == "?" GOTO :erreur
    if "%CurrChar%" == "<" GOTO :erreur
    if "%CurrChar%" == ">" GOTO :erreur
    if "%CurrChar%" == "|" GOTO :erreur
    if "%CurrChar%" == ":" GOTO :erreur
    if "%CurrChar%" == " " GOTO :erreur

    REM On reboucle
    GOTO :boucle

    :erreur
    set /p AfficheMess=Le nom de fichier est vide ou un caractŠre interdit a ‚t‚ saisi. Veuillez recommencer l'op‚ration. Pressez la touche sur Entr‚e...
    REM Saut de ligne
    ECHO.
    GOTO :FileName

    :create
    REM Ajout de l'extension ".txt" au nom de fichier entré par l'utilisateur.
    SET FileName=%FileName%.txt
    REM CC11lis32.exe DCR001C.DAT /OUT = %FileName%
    REM Saut de ligne
    ECHO.
    set /p AfficheMess=Le nouveau nom de fichier est %FileName%. Pressez la touche Entr‚e pour fermer la fenˆtre...


    Merci.
    0
    1. Panov Messages postés 4 Statut Membre
       
      Je viens de m'apercevoir que lorsque que l'on saisie un guillemet le code plante déjà à la ligne
      IF /I "%FileName%" == "EXIT" GOTO :EOF
      0