Je dois vérifier si une chaîne contient quoi que ce soit, à l'exception du chiffre. Mais j'ai un problème. ne renvoie rien, mais il devrait renvoyer BDFBDFD.
Mais P> retourne '123'. Pourquoi? Il devrait travailler vice versa. P> p> echo 123 | FindStr / R [^ 0123456789] Code> P>
3 Réponses :
Le Vous devez vous échapper avec un autre: p> ou utilisez des guillemets autour du motif: p> update strong>: En réalité, la partie suivante est fausse, comme vous cherchez "n'importe quoi sinon alors seulement des chiffres ". Ce qui suit ne fonctionnera pas pour les chaînes d'entrée comme "1x", qui contiennent évidemment quelque chose, sauf un chiffre. Donc, la meilleure solution est probablement d'utiliser ce que @gabber a suggéré, c'est-à-dire que c.-à-d. Débarrassez-vous de l'espace avant le tuyau. P> ^ code> est le caractère d'échappement de
cmd.exe code>.
echo xxxx| findstr /R "[^0-9]"
Après beaucoup de tests, nous allons ici:
echo 123 | findstr /R [^0123456789]
(Je pense que la motivation est dans la réponse de Christian K :))
Peut-être que vous pouvez essayer cela lors de la capture de la chaîne dans une variable et des options sur ce à faire en cas de correspondance ou non:
echo.%Name% | findstr /R [^0-9]Nul && ( echo There was a match in Name variable contents ) || ( echo Match Not Found )
Je ne peux pas obtenir cela pour travailler (sur XP). Le
[^ ...] code> La classe de caractères négatif semble être simplement brisé. Je pensais que cela pourrait être une question de s'échapper ou de citer, mais ne pouvait trouver rien qui fonctionnerait.