![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 16:20 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [讨论]请问诸位遇到过脱字符无效的情况没有? |
| 可打印版本 1,661 / 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等几个命令用单引 另外呢,就是遇到过一套进双引号时脱字难确定的情况,不能确定到底哪些得脱哪些不脱了。 而用单引号好歹还知道哪些地方需要脱,虽然麻烦一点,但不用一个个去确定。 这里换用双引号倒是成功了:) 另回楼上兄弟,不用子程序调用是因为实际处理时遇到的part内容及文件名等名有空格及& 符,有时part里还有斜杠,这种情况下要传递这样的参数非常麻烦 |
|
| 第5楼 pooronce | 发表于 2008-02-21 11:02 |
| 中级用户 发帖 250 积分 484 | |
Originally posted by knoppix7 at 2008-2-20 06:04 PM: 另外请问,为什么极不建议使用变量延迟呢? 变量延迟除了叹号变义,还有其它什么值得注意的地方吗 另外为什么我这里不延迟正常的,一延迟后就出错,就算脱字符加到叹号前都不行呢 |
|
| 第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: 谢谢,还没发现可以这样赋值的: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: 这么说来没什么特殊命令或特殊处理方法好用的了? 另外一个常遇到的问题是,遇到带&符号的字符串要整合后输出到文件里,该怎办呢? 用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: 谢谢,真是好方法啊 ![]() |
|
| 第15楼 pooronce | 发表于 2008-02-21 17:41 |
| 中级用户 发帖 250 积分 484 | |
|
不过奇怪的是,用上set /p后虽然是能正常显示好了,但用你的命令却怎么都无法导向到文件中去了,不知道为啥呢。。。
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |