2014-12-30 4 views
2

Увидели передавая аргумент в пакетный файл что-то вродеПередача аргументов в пакетном файле

filename.bat argument1 argument2 ..

Но я хочу, чтобы передать что-то вроде filename.bat пользователя = argument1 пароль = Argument2

Поскольку я не хочу зависеть от какого-либо заказа, пользователь может сначала передать пароль, а затем имя пользователя.

+0

Это возможно, взглянуть на это [статья] (http://www.codeproject.com/Questions/176497/DOS-Batch-how-to-parse-command -линии-в-DOS-пакетного-F). Но реализовать один и тот же язык на некоторых языках сценариев гораздо проще, например, vbs – Thangadurai

+1

Не совсем то, что вы просили, но вы должны взглянуть на http://stackoverflow.com/a/8162578/1012053 – dbenham

ответ

0

Я не думаю, что вы можете передать параметры в случайном порядке, так как они не идентифицируются по имени параметра, а% 0 -% 9

см http://www.robvanderwoude.com/parameters.php

Как уже упоминалось здесь, вам можно использовать тп 9 параметров при вызове пакетного файла ..

+0

Вы можете скрыть параметры maybee это: % 0 «пароль», чтобы определить, что будет дальше % 1 «<фактический пароль>» % 2 «пользовательская» строка, чтобы определить, что следующий параметр - это имя пользователя % 3 "< фактическое имя пользователя> " – DTH

1

Посмотрите здесь: processing switches

Хотя это ориентировано с использованием формата /username argument1 относительно легко адаптироваться кно есть проблема с = при передаче в «а» параметр - это рассматривается как разделитель, поэтому принимающий рутина будет видеть два параметра, но они будут в паре

(имя пользователя и argument1.)

Действительно зависит от того, как вы хотите обрабатывать данные. Вы можете, если вам так хочется, передать параметр "quoted", чтобы получить над = is a separator проблемы, а затем использовать

for /f "tokens=1,*delims==" %%a in ("%~1") do set "%%a=%%b" 

, но не забывая использовать кавычки, может стать камнем преткновения.

Примечание: использование процедуры, на которую я указал, не ограничивается параметром-счетчиком.

0

Вы можете достичь этого, используя variable substring, так как username = и password = оба символа длиной 9 символов.

Например

set temp=%0 
set temp=%temp:~0,9% 
if %temp%=="username=" (
    set tmpUser=%0 
    set username=%tmpUser:~9% 
    set tmpPass=%1 
    set password=%tmpPass:~9% 
) 
if %temp%=="password=" (
    set tmpPass=%0 
    set password=%tmpPass:~9% 
    set tmpUser=%1 
    set username=%tmpUser:~9% 
) 
+0

Синтаксис подстроки работает только с переменными, не такими параметрами, как'% 1' – jeb

+0

Хорошо, я исправил его jeb. –

Смежные вопросы