Comment puis-je retourner une valeur à partir d'une fonction dans un fichier batch?
J'ai le fichier de commandes suivant
@echo off
setlocal EnableDelayedExpansion
for /f "delims==" %%J in (File_List.txt) do (
call :setDate %%J MYD
echo/Date is: %MYD%
)
endlocal &goto :eof
:setDate
SETLOCAL ENABLEEXTENSIONS
echo %1
echo %~2
set NAME=%1
set NAME=%NAME:~-11%
echo %NAME%
echo %~2
endlocal&set %2=%NAME%&goto :eof
mais avec File_List.txt contenant
file2012-05.csv
- Je obtenir
file2012-05.csv
MYD
2012-05.csv
MYD
Date is:
Comment puis-je obtenir réellement la fonction setDate pour renvoyer la valeur que je veux?
Je veux rentrer %NOM%. Je faisais des expériences avec %1 et j'ai oublié de le changer en arrière. J'ai changé le code de retour de l'original maintenant, ne fonctionne toujours pas.
OriginalL'auteur AnthonyM | 2012-07-10
Vous devez vous connecter pour publier un commentaire.
Le lot interprète évalue
%MYD%
au moment de l'analyse, et à ce moment il est vide. C'est pourquoi vous avez Expansion Retardée. Modifier cette ligne::
et qu'il fonctionne comme vous le souhaitez, car alors il dit à l'interprète pour évaluer
MYD
au moment de l'exécution.OriginalL'auteur Eitan T
Que je ne comprends pas à partir de votre script ce que vous voulez atteindre, j'ai la réponse (pour l'exhaustivité) au sujet d'origine: renvoi d'une valeur à partir d'une fonction.
Voici comment je le fais:
Résultat est:
Set "%~1=filled"
. De toute façon, est la réponse exacte à la question posée dans le titre.OriginalL'auteur Elwood