无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2968|回复: 5
打印 上一主题 下一主题

脚本的传入参数中有特殊字符

[复制链接]
跳转到指定楼层
1#
发表于 2011-3-1 16:05:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位:我现在要写一个名为1.bat的脚本,这个脚本实现的是
判断传入参数是空就输出0,否则输出1.
1.bat脚本内容:
@echo off & setlocal enabledelayedexpansion
set param1=%~1
if ""=="!param1!" (
    echo 0
) else (
    echo 1
)
问题: 我正常传入参数程序都OK,但是如果像下边这样传一些特殊字符的参数,
执行时就会出现编译错误。
1.bat &&,1.bat "&&" 等等。
请教各位高手,在脚本中怎样处理才能实现不管传入什么参数都不会产生错误。
谢谢了。
2#
发表于 2011-3-1 17:13:07 | 只看该作者
&和&&都是组合命令这种方法好象实现不了,
写了个Console,看能不能满足你的要求,当参数含有特殊字符时最好用“”括起来才能正确返回

[ 本帖最后由 haiou327 于 2011-3-1 17:17 编辑 ]

Snap1.jpg (11.89 KB, 下载次数: 59)

Snap1.jpg

Result.rar

9.08 KB, 下载次数: 33, 下载积分: 无忧币 -2

回复

使用道具 举报

3#
发表于 2011-3-1 17:13:23 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

4#
发表于 2011-3-1 17:13:49 | 只看该作者
首先要实现不管传入什么参数都不会产生错误,这个基本上是不太可能的。

但是可以尽量保证不出错。

第一句使用""
set "param1=%~1"
后面的若非必要不要直接调用变量,这样也可以免去一些特殊字符产生的错误。。

我不知道你完整的批处理是什么。
后面的可以改为
if defined  param1 (
   echo 0
) else (
    echo 1
)
回复

使用道具 举报

5#
 楼主| 发表于 2011-3-1 22:34:08 | 只看该作者
感谢各位的回答。
因为程序的传入参数是由用户输入,所以输入什么都有可能,
所以想实现输入什么参数都不能出现错误。
这个程序对输入的参数有下面几个check处理。
1,先判断参数1是否有值,如果有值继续下面的步骤2的判断,否则退出程序。
2,判断参数1的值是否等于字符串“-b“,如果等于就退出,否则将该值作为参数传给另一个command命令。

难道想实现无论参数输入什么都不产生错误,不能实现吗?
回复

使用道具 举报

6#
发表于 2011-3-2 08:40:17 | 只看该作者
使用4楼的方案足以应付多种情况
set "arg1=%~1"
if not defined arg1 goto :eof
if /i "%arg1%"=="-b" goto :eof
::把所有参数都传给command2
command2 %*

用户输入的参数如果有带特殊字符需要自己用引号就
比如你上面的
11.bat "&&" "||" "|"
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-17 00:25

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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