[.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.
A voir également:

2 réponses

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

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

fonctionnent
0
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
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