如何将9个以上的参数传递给批处理文件

iAm*_*ing 11 batch-file

如何将超过9个参数传递给bach文件.
我尝试了另一个SO问题 在CMD批处理脚本中调用标签时,如何使用9个以上的参数? 但不适合我.

我试图在批处理中保留一个url的运行时值.
我的批次:

start iexplore http://example.com?firstName=%1^&middleName=%2^&lastName=%3^&country=%4^&address=%5^&address2=%6^&address3=%7^&mobileNo=%8^&landlineNo=%9SHIFT SHIFT SHIFT SHIFT SHIFT SHIFT SHIFT SHIFT ^&emailAddress=%1^&hobby1=%2^&hobby2=%3^&hobby3=%4^&hobby4=%5^&hobby5=%6
Run Code Online (Sandbox Code Playgroud)

使用时它采用%1,%2,%3,.....等的先前值和10,11,12th ....参数值

请帮忙 !

bas*_*sin 11

将前九个参数保存在一个变量中.那么多次调用shift,然后才使用其余的:

set "v=http://example.com?firstName=%1&middleName=%2&lastName=%3&country=%4&address=%5&address2=%6&address3=%7&mobileNo=%8&landlineNo=%9"
shift
shift
shift
shift
shift
shift
shift
shift
shift
start iexplore %v%&emailAddress=%1&hobby1=%2&hobby2=%3&hobby3=%4&hobby4=%5&hobby5=%6
Run Code Online (Sandbox Code Playgroud)


小智 6

这是一个更简单的解决方案,假设您只想将值传递给另一个程序。此示例允许向 zip 传递最多 27 个参数...

@echo OFF
set ZipArgs=%1 %2 %3 %4 %5 %6 %7 %8 %9
for /L %%i in (0,1,8) do @shift
set ZipArgs=%ZipArgs% %1 %2 %3 %4 %5 %6 %7 %8 %9
for /L %%i in (0,1,8) do @shift
set ZipArgs=%ZipArgs% %1 %2 %3 %4 %5 %6 %7 %8 %9
"C:\Program Files\WinZip\wzzip.exe" %ZipArgs%
Run Code Online (Sandbox Code Playgroud)

第一行只是关闭将每行回显到屏幕上。以 开头的行使用命令行中接下来的 9 个参数set ZipArgs构建环境变量。ZipArgs“for”行使用 SHIFT 命令丢弃前 9 个参数,将后 9 个参数“放在前面”。最后一行执行 zip,将组装好的参数值传递给它。

您可以通过添加代码来检查命令行上的参数数量并采取适当的操作来使事情变得复杂,但这对我来说效果很好。