2017-09-30 2 views
0

Je travaille sur un fichier batch simple pour enregistrer un fichier texte pour chaque fichier JPG. Le contenu du fichier txt est entré par l'utilisateur en utilisant set/p. Pour une raison quelconque, lorsque j'ai utilisé set/p avec la boucle for, le fichier txt n'affichait pas la valeur entrée par l'utilisateur (il montre seulement: "ECHO est activé"). Toute aide serait très appréciée! Merci.Utilisation de la commande Set/p avec une boucle for

for %%Q in (*v.JPG) do (
set /p meas= "enter value " 
echo %meas%>"%%~nQ.txt" 
) 
pause 
+3

Utilisez la fonction 'search' dans la barre supérieure pour trouver des références à' l'expansion retardée'. – Magoo

+3

Copie possible de [Exemple d'expansion différée dans le fichier batch] (https://stackoverflow.com/questions/10558316/example-of -delayed-expansion-in-batch-file) –

Répondre

-1
for %%Q in (v*.jpg) do (set /p meas="enter value " && echo !meas! > %%~nQ.txt) 

J'ai testé cela en seulement une invite cmd mais devrait fonctionner dans un lot aussi bien.

Cela créera un nouveau fichier nommé <filename>.jpg.txt et contiendra la valeur entrée par l'utilisateur. La clé consiste à ajouter & & entre set /p et echo.

+0

https://stackoverflow.com/questions/38805476/enable-delayed-expansion-doesnt-work Magoo avait raison. Je ne sais pas comment cela a fonctionné pour moi. Doit avoir été une erreur de l'utilisateur de ma part. – foodcoder86

0

Magoo a raison, merci! J'ai dû utiliser Activer l'expansion retardée, puis reférer les variables comme! Variable! et pas% variable%. Malheureusement, il n'y a pas de documentation sur le site Web de Microsoft sur ce problème, du moins pas sur la page Web de la commande 'set'.