le script de commandes de sous-programme: Passage d'arguments
Ma compréhension est que, pour obtenir la date à partir d'un fichier passé dans un sous-programme comme un argument, vous devez re-définir cet argument comme une variable à l'intérieur de la sous-routine. Est-ce correct? Ce n'est pas faire, car pour moi, alors je me demande si je ne suis pas entièrement comprendre ce qui se passe. Je peux utiliser le passé en argument dans pratiquement n'importe quel autre sous-routine code, sauf pour la date de l'extraction.
set setupEXE=setup.exe
CALL :SUB_CheckCorrectDate %setupEXE%
GOTO EOF
::----------------------------------
:SUB_CheckCorrectDate
set filename=%1%
:: SUCCESSFUL
for %%x in (%filename%) do set FileDate=%%~tx
@For /F "tokens=1-3 delims=-/" %%A in ('@echo %FileDate%') do @(
Set file_Month=%%A
Set file_Day=%%B
Set file_Year=%%C
)
:: GET ERROR
for %%x in (%1%) do set FileDate=%%~tx
@For /F "tokens=1-3 delims=-/" %%A in ('@echo %FileDate%') do @(
Set file_Month=%%A
Set file_Day=%%B
Set file_Year=%%C
)
GOTO:EOF
:: ------------------
:EOF
Vous devez vous connecter pour publier un commentaire.
Utilisation
%1
pour accéder à ce paramètre, pas%i%
.L'argument variables ont les mêmes modificateurs comme POUR les variables, de sorte que vous pouvez utiliser
%~t1
.Pas besoin d'exécuter une commande dans votre POUR /F. Il est plus simple de traiter un littéral de chaîne à l'aide de
in ("string")
.Pas besoin de
:EOF
étiquette. Chaque script est implicite:eof
. J'aime utiliserexit /b
à la place.setlocal
. Il n'y a pas besoin deendlocal
, c'est peut-être faite via leexit
commande?exit
option. Est-ce une nouvelle fonctionnalité? Et, plus important encore, sont les environnements locaux correctement empilés les uns sur les autres?si vous voulez sérieusement à écrire des scripts batch, vous devez prendre soin de la syntaxe:
exit /b
Rem
plutôt que des palliatifs, comme::
etc. Downvote en raison de cette mauvaise mentorat préambule.