[.BAT] Test de guillemet dans une variable
Fermé
Panov
Messages postés
4
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
26 mars 2010
-
11 févr. 2010 à 17:10
Panov Messages postés 4 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 26 mars 2010 - 12 févr. 2010 à 09:44
Panov Messages postés 4 Date d'inscription jeudi 11 février 2010 Statut Membre Dernière intervention 26 mars 2010 - 12 févr. 2010 à 09:44
A voir également:
- [.BAT] Test de guillemet dans une variable
- Ce programme est écrit en python. il construit un mot secret dans une variable mais il ne l'affiche pas. modifiez-le pour qu'il affiche le mot secret. exécutez-le. quel est ce mot secret ? ✓ - Forum Python
- Test pc - Guide
- Fichier bat - Guide
- Test ram - Guide
- Bat to exe converter - Télécharger - Édition & Programmation
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.
Panov
Messages postés
4
Date d'inscription
jeudi 11 février 2010
Statut
Membre
Dernière intervention
26 mars 2010
12 févr. 2010 à 09:44
12 févr. 2010 à 09:44
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
IF /I "%FileName%" == "EXIT" GOTO :EOF