Разбейте переменное число параметров и имя файла из командной строки на две пакетные переменные - PullRequest
0 голосов
/ 01 мая 2019

У меня есть следующая командная строка в Windows CMD для запуска пакетной программы, которая должна передать параметры и имя файла другой программе, вызываемой в пакетном файле:

mysample.bat -parm1=7 -parm2="abc" -parm3 myfile

Моя цель - проанализироватькомандной строки и завершить с двумя переменными %options% и %filename%.где %options% содержит параметры, введенные в командной строке, а %filename% содержит имя файла.

Две переменные должны содержать следующее (из приведенной выше примера командной строки): %options% всодержать -parm1=7 -parm2="abc" -parm3 %filename% с filename, чтобы содержать myfile

Я пробовал варианты цикла for, но безрезультатно.Я искал примеры здесь и в других местах, но не нашел ничего, что производило бы то, что мне нужно.

Может кто-нибудь предложить ясный, надежный способ сделать это в пакетной программе?Заранее спасибо.

Спасибо

1 Ответ

0 голосов
/ 01 мая 2019

После ваших комментариев я предполагаю, что вам нужно пройтись по каждому аргументу и установить все параметры, поэтому, используя %*, мы фиксируем все аргументы.

for %%i in (%*) do echo %%~i

Что касается вашего требования, если выбудет иметь имя файла в качестве последнего аргумента каждый раз, тогда здесь есть опция:

@echo off
setlocal enabledelayedexpansion
(for %%i in (%*) do set "filename=%%~i")>nul
set "options=%*"
set "options=!options:%filename%=!"
echo %options% %filename%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...