2010-09-14 8 views
4

Wow, je n'aurais jamais cru que j'écrirais quoi que ce soit sous DOS. Maintenant que je le fais, je sais pourquoi je n'ai jamais voulu. La syntaxe est absurde!Comment faire une condition de comparaison de chaînes sous DOS?

En tout cas, j'ai besoin d'aide s'il vous plaît. Je voudrais demander à l'utilisateur pour l'entrée, et si une ligne vide est reçue, je voudrais utiliser la valeur par défaut, comme ceci:

set name=abraham. 
set /p input=please enter your name, press enter to use %name%: 
if not %input%=="" set name=%input% 
echo your name is %name% 

Je reçois une erreur dit « jeu était inattendue à ce moment "

Pourriez-vous nous aider s'il vous plaît?

+0

Je suis juste curieux - pourquoi avez-vous soudainement * avez * à programmer en DOS? Tu ne peux pas écrire un Java/C#/etc. programme de console qui serait infiniment plus facile à écrire? –

+0

Il est utilisé pour automatiser un déploiement de projet qui implique de nombreuses étapes. Pour des raisons de sécurité et géographiques, nous devons parfois demander au client de le faire par téléphone. – Haoest

Répondre

8

Essayez

set name=abraham 
set /p name=please enter your name, press enter to use %name%: 

echo entered : %name% 

Notez que dans les fichiers cmd, si rien n'est entré, le var ne change pas.

Ou, avec le cas:

set name=abraham 
set input= 
set /p input=please enter your name, press enter to use %name%: 
if "%input%" NEQ "" set name=%input% 
echo entered : %name% 

Notez les guillemets autour de l'entrée dans l'instruction if, et un avis que je suis Curage entrée avant de lancer (ou il tiendra la dernière valeur si rien n'est entré par l'utilisateur)

+0

omg! aurait dû poster une question avant que j'y mette autant de temps. Je vous remercie! – Haoest

2

Les chaînes vides sont réellement vides dans la programmation shell, essayez donc if "%input%"=="" set... (avec guillemets) ou if %input%== set... (la chaîne vide est vide).

+0

désolé pour la référence lolcat mais je ne pouvais pas résister> _ < – mafu

+0

LOL c'est coool. – Haoest

1

Je crois que vous avez besoin de mettre des guillemets simples (pas sûr si la matière double ou simple) autour de la variable:

@echo off 
set name=abraham. 
set /p input=please enter your name, press enter to use %name%: 
if not '%input%'=='' set name=%input% 
echo your name is %name% 

pause