[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 如何获取命令行的从2个开始的参数列表

我们知道%*是从第一个开始的参数列表. 那么我该如何获得从二个开始的参数列表呢.
%*好像不随这shift变化, 不知道怎么做快捷.

C:\Test>test.bat 1 2 3
2 3
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set a=%*
  4. set b=%1
  5. set c=!a:%b%=!
  6. set c=%c:~1%
  7. echo %c%
  8. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

这两行太难理解了
set c=!a:%b%=!
set c=%c:~1%

TOP

a.bat:
  1. @echo Off & Setlocal
  2. For /l %%a in (2 1 9) do (Call Set "Params=%%Params%%%%%%a")
  3. Echo %Params%
  4. EndLocal
  5. Pause
复制代码
  1. E:\Documents and Settings\Administrator\Desktop>a 1 2 3 4 5 6 7 8 9
  2. 23456789
  3. Press any key to continue . . .
复制代码
心绪平和,眼藏静谧。

TOP

  1. @echo off
  2. set a=%*
  3. set b=%a:* =%
  4. echo %b%
  5. pause
复制代码

6楼版主还真能找出错处,现结合7楼的思路修改如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :loop "1 2" 1 2 3 1 11
  4. pause
  5. :loop
  6.   set a=%*
  7.   set b=!a:*%1 =!
  8.   echo %b%
  9. goto :EOF
复制代码
1

评分人数

TOP

楼上思路好开阔,不过还有一个错误:
a.bat "1 2" 3 4 5 6....
这个格式下就会出错了。第二个参数应该是3,而不是2"。
心绪平和,眼藏静谧。

TOP

修正2楼一个不足之处,如果参数有和%1重复的就会出错。
如: call :loop 1 1 2 3 1 11
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :loop 1 1 2 3 1 11
  4. pause
  5. :loop
  6.   set a=%*
  7.   set c=!a:*%1=!
  8.   set c=%c:~1%
  9.   echo %c%
  10. goto :EOF
复制代码

[ 本帖最后由 随风 于 2008-11-26 20:38 编辑 ]
技术问题请到论坛发帖求助!

TOP

使用shift,可以摆脱9个参数的限制
@echo off
echo 多于9个参数
call :demo 1 2 3 4 5 6 7 8 9 10 11
echo 带引号
call :demo "a a" b c "d d" e
echo 相同字符组成
call :demo 1 1 11 1 1 11 111 1
pause
goto
:eof

:demo
shift & echo ALL: %*
:lp
if {%1}=={} echo. & goto:eof
echo %1
shift & goto:lp


运行结果
多于9个参数
ALL: 1 2 3 4 5 6 7 8 9 10 11
2
3
4
5
6
7
8
9
10
11

带引号
ALL: "a a" b c "d d" e
b
c
"d d"
e

相同字符组成
ALL: 1 1 11 1 1 11 111 1
1
11
1
1
11
111
1


[ 本帖最后由 dishuo 于 2008-11-28 22:14 编辑 ]
高手=发现问题^分析问题^解决问题

TOP

返回列表