[.BAT] Test de guillemet dans une variable
Panov
Messages postés
4
Statut
Membre
-
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.
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:
- [.BAT] Test de guillemet dans une variable
- Test performance pc - Guide
- Creer un fichier .bat - Guide
- Steam deck oled test - Guide
- Test disque dur - Télécharger - Informations & Diagnostic
- Test composant pc - Guide
2 réponses
C'est une histoire de doublement, je viens de tester :
SET GUI=""""
IF %GUI == """" echo guillemet
IF "%GUI%" == """""" echo guillemet
fonctionnent
SET GUI=""""
IF %GUI == """" echo guillemet
IF "%GUI%" == """""" echo guillemet
fonctionnent
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.
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.