Récupérer les paramètres passés au script

Plusieurs solution sont possible pour récupérer les paramètres passés au script en voici une.

Pour découper en 4 variables:

  • premier paramètre = 1e variable
  • deuxieme paramètre = 2e variable
  • troisième paramètre = 3e variable
  • le reste = 4e variable

pour stocker les x paramètres (le reste) dans la variable prog

REM tokens est tous les parametres passés au script
set var1=%1
set var2=%2
set va3=%3
for /F "tokens=1,2,3* delims= " %%a IN ('echo %*') do set var4=%%d

Example d'usage:

a.bat

REM ici %1 est le pwd pour executer le SFX, le reste sont les parametres à passer au SFX
%~dp0\b.exe -pMonMotDePasse 1 2 3 4 5

b.bat

@echo off
REM Recup des paramètres dans 4 variables
for /F "tokens=1,2,3* delims= " %%a IN ('echo %*') do set reste=%%d

REM affiche les 4 paramètres récupérés
call :message "%1,%2,%3,%reste%"

goto :eof
:message
REM Pour afficher les messages
echo start /D c:\ /B powershell -Command "& {Add-Type -AssemblyName PresentationCore,PresentationFramework;[System.Windows.MessageBox]::Show('%~1')}">%TMP%\msg.bat
echo del /Q %%~f0>>%TMP%\msg.bat
start /D c:\ /B powershell -Command "& {Start-Process -WindowStyle Hidden cmd.exe -ArgumentList \"/C %TMP%\msg.bat\"}"
exit /b.

Si ce script (b.bat) est intégré et auto-exécuté dans un SFX 7Zip protégé par un mot de passe (b.exe) il audra fournir le mot de passe pour l'exécuter.

On peut lancer le SFX (b.exe) en ligne de commande ou depuis un script (a.bat) mais le premier paramètre doit être le mot de passe (option -p) .

Le premier paramètre récupéré par le script est en 2e position soit ici param1.

Dernière modification : le 2023/05/24