La commande for / f ne fonctionne pas correctement (pour moi)

-1

J'ai un problème avec quelque chose. Je suis un novice et un débutant alors désolé si cette question est stupide. J'ai créé un fichier texte comme ceci:

User/Jack

Password/Pancake

Status/Hello

Je voulais seulement montrer le mot de passe alors j'ai utilisé la commande for / f. ;

for /f "delims=/ skip=1 tokens=2" %%a in (Users.txt) do (
    set Password=%%a 
)

Quand j'ai essayé cela, "Bonjour" est apparu dans ma fenêtre cmd. J'essaie de résoudre ce problème depuis des heures mais je n'ai pas encore trouvé de solution. Pourriez-vous m'aider?

Merci d'avance!

Poseidon
la source

Réponses:

1

À chaque boucle (itération), vous attribuez le jeton de texte à "Mot de passe", en écrasant tout ce qu'il contenait auparavant. Donc, après la fin de la boucle For, "Mot de passe" contiendra Hello comme c'est la dernière chose que vous attribuez à "Mot de passe".

Je suppose que vous avez echo password ou similaire après la boucle pour l'afficher; Si tel est le cas, déplacez-le dans la boucle pour afficher la variable à chaque itération de la boucle.

Ƭᴇcʜιᴇ007
la source
1

Vous êtes proche de la solution, mais vous sautez la première ligne, puis vous traitez chacune des lignes restantes. La valeur résultante est donc toujours celle du dernier ligne.

Une solution qui me vient à l'esprit est la suivante: -

for /f "delims=/ tokens=1*" %%a in (Users.txt) do (
    if "%%a" == "Password" set Password=%%b 
)

Ceci lit chaque ligne et la scinde en %%a, le texte avant la /, et %%b, le reste de la ligne après le /. le Password variable est définie uniquement lorsque le premier champ correspond.

AFH
la source
Merci beaucoup! Cela m'a vraiment aidé! Merci mec :)
Poseidon
0

Cela peut être corrigé de plusieurs manières, mais le plus simple dans votre cas serait de réorganiser le fichier "users.txt" et de placer la dernière ligne sous le nom "Password / Pancake" et de définir la valeur "ignorer" sur 2. va résoudre votre problème.

Je recommande de penser à refaire le script de manière plus générique pour pouvoir aller chercher quelque chose dont vous ne connaissez pas la position.

IronWilliamCash
la source
Je suis désolé de le dire, mais du point de vue des programmeurs, ce n’est jamais une bonne suggestion de modifier les entrées de telle sorte que votre script commence à fonctionner. Je ne rejetterai pas votre réponse, car techniquement, vous avez raison, mais c'est une mauvaise pratique et il n'est pas recommandé de le faire.
LPChip
@LPChip: Je suis d'accord, mais cela résout le problème. C'est pourquoi j'ai recommandé en bas de refaire le script de manière générique. Je n'ai simplement pas eu le temps de refaire tout le script moi-même.
IronWilliamCash