Nano Hash - криптовалюты, майнинг, программирование

пакетный файл - проверка параметров

у меня есть пакетный файл, который должен принимать входные данные «-input1», «-input2» и «-input3». Здесь мне нужно проверить параметры, например, если пользователь задает входной параметр как «-test» или «-blah» или любой другой параметр, тогда я должен выдать ошибку как «параметр unregonized». Как я могу достичь этого? я пытался перебирать параметры как %1 %2 и т. д., но не смог добиться требуемого поведения.

IF "%1"=="" (
 GOTO :ERROR3
)
IF "%1"=="-input1"  (
 SET value1=%2
)
@IF "%3"=="-input1"  (
 SET value1=%4
)
@IF "%5"=="-input1"  (
 SET value1=%6
)
@IF "%7"=="-input1"  (
 SET value1=%8
)
IF "%1"=="-input2" (
 SET value1=%2
)
@IF "%3"=="-input2" (
 SET value2=%4
)
@IF "%5"=="-input2" (
 SET value2=%6
)
@IF "%7"=="-input2" (
 SET value2=%8
)
IF "%1"=="-input3" (
 SET value3=%2
)
@IF "%3"=="-input3" (
 SET value3=%4
)
@IF "%5"=="-input3" (
 SET value3=%6
)
@IF "%7"=="-input3" (
 SET value3=%8
)

    // some codes here

:ERROR1
ECHO "ERROR1"
GOTO :END
:ERROR2
ECHO "ERROR1"
GOTO :END
:ERROR3
ECHO Usage SAMPLE.bat -input1 "value1" -input2 "value2" -input3 "value3"
:END

Любая помощь..


  • используйте shift C:\›shift /? Изменяет положение заменяемых параметров в пакетном файле. SHIFT [/n] Если включены расширения команд, команда SHIFT поддерживает переключатель /n, который указывает команде начать сдвиг с n-го аргумента, где n может быть от нуля до восьми. Например: SHIFT /2 сдвинет %3 на %2, %4 на %3 и т. д., а %0 и %1 не затронет. 24.10.2013

Ответы:


1

Вот простой пример сдвига по параметрам

@echo off
setlocal
set "value1="
set "value2="
set "value3="

:Parse
set "Param=%~1"
if not defined Param goto Validate
if "%Param%"=="-input1" set "value1=%2" & goto Next
if "%Param%"=="-input2" set "value2=%2" & goto Next
if "%Param%"=="-input3" set "value3=%2" & goto Next
goto Error1

:Next
shift & shift
goto Parse

:Validate
if defined value1 if defined value2 if defined value3 goto Main
goto Error2

:Main
echo %value1% %value2% %value3%
goto End

:Error1
echo Invalid Parameter: %1 %2
goto End

:Error2
echo Usage %~nx0 -input1 "value1" -input2 "value2" -input3 "value3"
goto End

:End
endlocal
24.10.2013

2

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

@echo off
setlocal EnableDelayedExpansion

rem Define the list of parameters
set params=-input1 -input2 -input3

rem Initialize the array of parameters and their values
set n=0
for %%a in (%params%) do (
   set /A n+=1
   set param[%%a]=!n!
   set "value!n!="
)

:nextParam
set "param=%~1"
shift
if not defined param goto start
if defined param[%param%] (
   set "value!param[%param%]!=%~1"
   shift
   goto nextParam
)
echo ERROR - Bad parameter: %param%
goto :EOF

:start
echo Values of given parameters:
echo/
for /L %%i in (1,1,%n%) do echo Value%%i = "!value%%i!"
24.10.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..