找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27137|回复: 2

批处理如何判断参数个数?

[复制链接]
发表于 2010-12-2 13:48:40 | 显示全部楼层 |阅读模式
Linux的Shell中有如下的一段检查用户执行给定的批处理文件时,输入的参数个数是否合法,对应的批处理该如何实现呢?
    if [ $# -eq 0 ]
    then
        export ITV=1
        export CNT=1

    elif [ $# -eq 1 ]
    then
        if ([ "$1" = "-d" ])
        then
            export ITV=1
            export CNT=1
        else
            usase
        fi

    elif [ $# -eq 2 ]
    then
            export ITV=$1
            export CNT=$2

    else
        usase
    fi
 楼主| 发表于 2010-12-2 13:49:29 | 显示全部楼层
问题比较急,在线等。
望高手帮忙解决一下,不胜感激。
 楼主| 发表于 2010-12-2 15:36:24 | 显示全部楼层
呵呵,已经搞定了,共享给大家。
也请大家帮忙看看有没有什么问题。
rem check parameter
set /a param_num=0
set /a p1=0
set /a p2=0
:loop
if [%1] == [] goto :ret
set /a param_num+=1
if %param_num% equ 1 (set p1=%1)
if %param_num% equ 2 (set p2=%1)
shift
goto :loop
:ret

if %param_num% equ 0 (
    set ITV=1
    set CNT=1
) else (
    if %param_num% equ 1 (
        if "%p1%" == "-d" (
            set ITV=1
            set CNT=1
        ) else (
            call :usase
            goto :EOF
        )
    ) else (
        if %param_num% equ 2 (
            set ITV=%p1%
            set CNT=%p2%
        ) else (
            call :usase
            goto :EOF
        )
    )
)

评分

参与人数 1PB -2 收起 理由
Batcher -2 请编辑自己的帖子,把代码放到code标签里面 ...

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 19:40 , Processed in 0.019686 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表