windows – 批处理脚本传递多个参数进行调用
发布时间:2021-03-04 20:46:48 所属栏目:系统 来源:网络整理
导读:我编写了一个脚本,其中包含一个函数,该函数应循环遍历列表并返回给定所述列表中项目索引的值.我有一个名为:: find的函数应该采用2个参数:列表和项目位置.我不确定如何处理函数中的多个参数.如果我在循环中用%MY_LIST%替换%LIST%并且从参数列表中删除%M
我编写了一个脚本,其中包含一个函数,该函数应循环遍历列表并返回给定所述列表中项目索引的值.我有一个名为:: find的函数应该采用2个参数:列表和项目位置.我不确定如何处理函数中的多个参数.如果我在循环中用%MY_LIST%替换%LIST%并且从参数列表中删除%MY_LIST%,则该脚本运行正常,并将其传递给call:find,但我真的想知道如何传递多个参数.我认为它们只是作为整个字符串传递给函数… @echo off setlocal enableDelayedExpansion cls :: ---------------------------------------------------------- :: Variable declarations :: ---------------------------------------------------------- set RETURN=-1 set MY_LIST=("foo" "bar" "baz") set TARGET_INDEX=1 :: ---------------------------------------------------------- :: Main procedure :: ---------------------------------------------------------- call :log "Finding item %TARGET_INDEX%..." call :find %MY_LIST% %TARGET_INDEX% call :log "The value is: %RETURN%" goto Exit :: ---------------------------------------------------------- :: Function declarations :: ---------------------------------------------------------- :find call :log "Called `:find` with params: [%*]" set /a i=0 set LIST=%~1 & shift for %%a in %LIST% do ( if !i! == %~1 ( set RETURN=%%a ) set /a i=!i!+1 ) goto:EOF :printDate for /f "tokens=2-4 delims=/ " %%a in ('echo %DATE%') do ( set mydate=%%c/%%a/%%b) for /f "tokens=1-3 delims=/:./ " %%a in ('echo %TIME%') do ( set mytime=%%a:%%b:%%c) echo|set /p="[%mydate% %mytime%] " goto:EOF :log call :printDate echo %~1 goto:EOF :: ---------------------------------------------------------- :: End of script :: ---------------------------------------------------------- :Exit 更新 我的脚本现在运行正常;感谢nephi12. http://pastebin.com/xGdFWmnM 解决方法call :find "%MY_LIST%" %TARGET_INDEX% goto :EOF :find echo %~1 %~2 goto :EOF 它们与args一样传递给脚本…;) (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |