J'ai besoin de traiter plusieurs paramètres dans un fichier batch. Il peut s'agir d'un paramètre simple ou composite avec un argument et un chemin associé.Si le paramètre contient un séparateur de virgules, le cas échéant, le diviser
Format pour un paramètre composite doit être quelque chose comme: ""ARG=CUSTOM_SOURCE,SOURCE=C:\Folder\OtherFolder\SourceFiles""
Je ne peux pas comprendre comment obtenir et définir des valeurs pour ARG et SOURCE.
Ce que j'ai jusqu'à présent:
setlocal enableextensions enabledelayedexpansion
set sep=","
set str1=%3
if not "x!str1:%sep%=!"=="x%str1%" (
echo found pattern rem gets here with no problem
echo 3 is %3 rem output: string is "ARG=CUSTOM_SOURCE,SOURCE=C:\Folder\OtherFolder\SourceFiles"
set sourceString=%3
echo "%sourceString%" rem output: ""
REM extract source path from argument
:nextVar
for /F "tokens=1* delims=," %%a in ("%3") do (
set %%a
echo "%%a" REM output: "ARG CUSTOM_SOURCE SOURCE C:\Folder\OtherFolder\SourceFiles"
set sourceString=%%b
echo "%%b" "sourceString" REM output: "" ""
)
if defined sourceString goto nextVar
echo "%ARGS%" "%SOURCE%" REM output: "" ""
)
Code pour la chaîne source de division, je suis de cette réponse: https://stackoverflow.com/a/18821153/6385702. Essayé autre option aussi, mais rien ne fonctionne si loin.
Semble, le principal problème que j'ai avec set var=string
partie. Même avec enabledelayedexpansion
j'obtiens des valeurs vides. Je ne suis pas à l'aise avec les fichiers batch et j'ai vraiment empilé avec celui-ci. Qu'est-ce que j'oublie ici?
EDIT: paramètres sont passés de l'application hta (et peuvent également être transmis à partir de l'invite de commande directement) le format suit: cmd /k myBatch.cmd PARAM REQ_PARAM "ARG=CUSTOM_SOURCE,SOURCE=C:\Folder\OtherFolder\SourceFiles" OPTIONAL_PARAM
Bon, alors maintenant, ' "ARG = CUSTOM_SOURCE, SOURCE = C: \ Dossier \ OtherFolder \ SourceFiles"' est le troisième argument de quatre ans et est entouré d'une seulement un ensemble de doubles quotes au lieu de deux! Et certainement votre application HTML peut passer les paramètres déjà divisés à la virgule! – Compo
nombre de paramètres n'est pas le problème ici, dans mon exemple, je l'ai défini comme% 1, car il n'y avait pas d'autre. Mais je vois le problème avec des ensembles de doubles quotes maintenant. –
Eh bien, cela dépend de la façon dont vous définissez "problème" car votre code fonctionne clairement avec le premier argument, "% 1" qui devrait se résoudre en tant que "PARAM". Si votre question n'a pas de sens ou si vous ne l'éditez pas avec soin, elle déroutera les lecteurs et entravera les solutions potentielles. Et pourquoi votre application HTML ne peut-elle pas passer les paramètres déjà séparés à la virgule? – Compo