中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-07 13:48
48,040 主题排行 / 350,125 发帖 / 今日 0 篇 / 48,252 会员排行
DOS批处理 & 脚本技术(批处理室) » [讨论]请问诸位遇到过脱字符无效的情况没有?
可打印版本  1,654 / 17
第1楼 pooronce 发表于 2008-02-20 17:16
中级用户 发帖 250 积分 484
[讨论]请问诸位遇到过脱字符无效的情况没有?
比如如下一段代码,当用延迟环境变量后,不管怎么设置都会出错误“此时不应有< ”!(垃圾ms,都不给点友好实际点的错误信息)。而没打开环境延迟时是正常的。

在这里,我试过,不管用几个脱字符都无法把<脱走了,郁闷了。
请问各位遇到过这种情况没有呢

第2楼 knoppix7 发表于 2008-02-20 18:04
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
叹号处理错误.这种时候极不建议使用变量延迟.
试着用其他方法
如for XXXXXXXX DO (
call :block "%%i"
)
第3楼 lxmxn 发表于 2008-02-20 20:10
版主 发帖 4,938 积分 11,386
sed 命令应该用双引号括起来的,用单引号会报错。

另外,不需要使用usebackq和``,直接在for的in里面试试 ' " sed "...." filename " ' 。
第4楼 pooronce 发表于 2008-02-21 10:51
中级用户 发帖 250 积分 484
Originally posted by lxmxn at 2008-2-20 08:10 PM:
sed 命令应该用双引号括起来的,用单引号会报错。

另外,不需要使用usebackq和``,直接在for的in里面试试 ' " sed "...." filename " ' 。


谢谢
避免用双引号一是因为习惯问题,习惯了sed等几个命令用单引
另外呢,就是遇到过一套进双引号时脱字难确定的情况,不能确定到底哪些得脱哪些不脱了。 而用单引号好歹还知道哪些地方需要脱,虽然麻烦一点,但不用一个个去确定。

这里换用双引号倒是成功了:)


另回楼上兄弟,不用子程序调用是因为实际处理时遇到的part内容及文件名等名有空格及& 符,有时part里还有斜杠,这种情况下要传递这样的参数非常麻烦
第5楼 pooronce 发表于 2008-02-21 11:02
中级用户 发帖 250 积分 484
Originally posted by knoppix7 at 2008-2-20 06:04 PM:
叹号处理错误.这种时候极不建议使用变量延迟.
试着用其他方法
如for XXXXXXXX DO (
call :block "%%i"
)


另外请问,为什么极不建议使用变量延迟呢?
变量延迟除了叹号变义,还有其它什么值得注意的地方吗
另外为什么我这里不延迟正常的,一延迟后就出错,就算脱字符加到叹号前都不行呢
第6楼 knoppix7 发表于 2008-02-21 11:33
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
另回楼上兄弟,不用子程序调用是因为实际处理时遇到的part内容及文件名等名有空格及& 符,有时part里还有斜杠,这种情况下要传递这样的参数非常麻烦


不是太麻烦.
call :block "%%i"

block里用%~1来去掉加的引号.



因为不知道要加多少 转义符.用功夫算转义符的话.block的方法都写完了..


就echo一下.拖2层.加2个..
蒙一下。你那个转义符至少是5个.
第7楼 pooronce 发表于 2008-02-21 11:55
中级用户 发帖 250 积分 484
一般FOR里面是加3个,不套FOR是加1个,习惯了直接全部替换就ok了

至于你说的加引号传递并使用,老早也就试过,上面提到过,里面包含有&符号,当用~脱掉引号时就出错了,总不能每次调用及赋值再检测里面的&符号替换成^&
第8楼 knoppix7 发表于 2008-02-21 12:51
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
set "str=%~1"
第9楼 pooronce 发表于 2008-02-21 13:37
中级用户 发帖 250 积分 484
Originally posted by knoppix7 at 2008-2-21 12:51 PM:
set "str=%~1"


谢谢,还没发现可以这样赋值的:o
第10楼 pooronce 发表于 2008-02-21 13:44
中级用户 发帖 250 积分 484
个么顺路另外讨教一下,如果需要跳出for循环,你们一般怎么处理的呢。
麻烦再说说吧,谢谢
第11楼 slore 发表于 2008-02-21 14:54
铂金会员 发帖 2,478 积分 5,212
goto呗
第12楼 pooronce 发表于 2008-02-21 15:29
中级用户 发帖 250 积分 484
Originally posted by slore at 2008-2-21 02:54 PM:
goto呗


这么说来没什么特殊命令或特殊处理方法好用的了?

另外一个常遇到的问题是,遇到带&符号的字符串要整合后输出到文件里,该怎办呢? 用echo 总是出错,加引号吧又容易出现配对问题。而且引号本又多了不好
第13楼 knoppix7 发表于 2008-02-21 17:11
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
set /p "null=内容"<nul&echo+>>XX.txt
第14楼 pooronce 发表于 2008-02-21 17:19
中级用户 发帖 250 积分 484
Originally posted by knoppix7 at 2008-2-21 05:11 PM:
set /p "null=内容"<nul&echo+>>XX.txt


谢谢,真是好方法啊
第15楼 pooronce 发表于 2008-02-21 17:41
中级用户 发帖 250 积分 484
不过奇怪的是,用上set /p后虽然是能正常显示好了,但用你的命令却怎么都无法导向到文件中去了,不知道为啥呢。。。
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023