Я не совсем уверен, что вижу вашу проблему.%1
в данном случае явно -r
, и вы должны использовать %2
, что c:\mydir
.
Если вы хотите убедиться, что пользователь указывает -r
во-первых, вы можете использовать что-то вроде:
@echo off
if not "x%1"=="x-r" (
echo [%date% %time%] ERROR Called without -r
goto :eof
)
echo [%date% %time%] VERBOSE START
for %%X in (%2\*.xml) do echo [%date% %time%] VERBOSE systemmsg Parsing file '%%X'
echo [%date% %time%] VERBOSE END
Если -r
является необязательным , вы часто можете сделать:
set fspec=%1
set rflag=no
if "x%fspec"=="x-r" (
set fspec=%2
set rflag=yes
)
и затем использовать rflag
и fspec
.
Выполнение синтаксического анализа параметров, не зависящих от позиции, в пакете не является легкой задачей.У нас есть подсистема, которая делает это, но, к сожалению, она проприетарна.Я скажу вам, что он пересекает около 80 с лишним строк и не является самым быстрым зверьком в мире.
Мой совет - навязывать строгие требования к форматам аргументов, а не понижатьпозиционно-независимый путь.Вы избавите себя от множества неприятностей: -)