![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 04:59 |
共 48,039 主题排行 / 350,124 发帖 / 今日 2 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已结]setlocal EnableDelayedExpansion 与 "!" |
| 可打印版本 9,601 / 25 |
| 第1楼 kcdsw | 发表于 2006-06-11 15:31 |
| 中级用户 发帖 179 积分 404 | |
|
[已结]setlocal EnableDelayedExpansion 与 "!" 今天值班,实在无聊 cs被人菜,qq没人聊.想写bat也没绕过来 昏到在阵地上了
还望兄弟们指点 |
|
| 第2楼 namejm | 发表于 2006-06-12 23:48 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
既然起用了变量延迟,为什么还要用%m%来引用呢?应该该成!m!才对啊。
|
|
| 第3楼 namejm | 发表于 2006-06-13 13:31 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
我测试了一下下面的代码,它已经加了1了啊,你到底想让它变成多少呢?
具体的代码有没有问题,因为你想要实现的功能不明了,我没去细看,但是至少是能够加1的,要不然你试试吧。 |
|
| 第4楼 kcdsw | 发表于 2006-06-17 10:29 |
| 中级用户 发帖 179 积分 404 | |
|
希望高手能给个思路! 谢谢
|
|
| 第5楼 bagpipe | 发表于 2006-06-17 12:17 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
setlocal EnableDelayedExpansion
set m=0 for /f "tokens=* delims=" %%m in ('findstr /v /C:"730 730" cover.ps') do ( if "!m!"=="686" (pause) else echo %%m >>cover3.txt set /a m=!m!+1 ) pause exit 不知道楼主想要什么样的效果,这个批处理没有什么错误的地方 |
|
| 第6楼 kcdsw | 发表于 2006-06-17 13:28 |
| 中级用户 发帖 179 积分 404 | |
|
是这个意思 如果一旦cover.ps中 含有感叹号的时候
会因为启用变量延迟 而造成这个感叹号不能被echo 到新文件中去 |
|
| 第7楼 bagpipe | 发表于 2006-06-17 15:09 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
@echo off
set m=0 for /f "tokens=*" %%m in ('findstr /v /C:"730 730" 2.txt') do ( setlocal EnableDelayedExpansion set /a m=!m!+1 if "!m!"=="686" (pause) else setlocal DISABLEDELAYEDEXPANSION&&echo %%m>>test.txt ) echo %m% 方法有点糙,不过这个问题有待考虑考虑了,楼主试试这个先 |
|
| 第8楼 kcdsw | 发表于 2006-06-17 15:17 |
| 中级用户 发帖 179 积分 404 | |
|
.....
F:\Print\blogcn订单\用户单\163> setlocal EnableDelayedExpansion set /a m=!m!+1 if "!m!" == "686" (pause) els 192.168.0.158\\BlogPrinting\\Sy e\\CoverPage_BG.jpg) 1>>test.tx ) 已经达到最大的 setlocal 递归层。 已经达到最大的 setlocal 递归层。 这是运行记录 |
|
| 第9楼 kcdsw | 发表于 2006-06-17 15:18 |
| 中级用户 发帖 179 积分 404 | |
|
而且感叹号 还是不见了
|
|
| 第10楼 bagpipe | 发表于 2006-06-17 15:20 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
看来重复调用会出现这个问题,不过行数如果少的话是可以的,我刚刚已经测试了,没有想到这个问题,在考虑考虑
|
|
| 第11楼 bagpipe | 发表于 2006-06-17 15:21 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
你的什么系统啊?我测试的是2000
|
|
| 第12楼 willsort | 发表于 2006-06-17 15:22 |
| 元老会员 发帖 1,512 积分 4,432 | |
|
───────────────── 版务记录 ───────────────── 执行:Will Sort 操作:移动主题:自 DOS疑難解答 & 問題討論(解答室) 说明:依照主题内容分类,更适合于发表在此版区 处罚:扣除因发表该主题而奖励的6点积分,版区违规惩罚性扣除2点积分 ───────────────── 版务记录 ───────────────── Re kcdsw: 首先,set/a有一套独立的变量识别机制,不需要使用!m!的形式延迟变量扩展,直接使用set /a m+=1 即可。而使用3楼中的 set /a m=%m%+1 反而会因为始终饮用初始化的变量,而出现无法持续递增的问题。 其次,关于文本中的!被转义的问题,解决办法仍然是关闭变量延迟并使用call,只是传递%%m时不再使用命令行参数,而是使用环境变量。如下: [ Last edited by willsort on 2006-6-17 at 15:24 ] |
|
| 第13楼 bagpipe | 发表于 2006-06-17 15:33 |
| 银牌会员 发帖 425 积分 1,144 来自 北京 | |
|
原来如此啊.......
|
|
| 第14楼 kcdsw | 发表于 2006-06-17 15:38 |
| 中级用户 发帖 179 积分 404 | |
|
泪流而....继续发帖
我传上来了 目的是在含有 730 730 这一行 通过它下一行的象素数据 重新计算它的宽度 ps: 730 730 为长宽值 但是原照片不是正方形 所以长宽比例错了 我想借用这个改成正确的 不想却出了篓子 把感叹号丢了 我的环境是 xp sp2 (oem正版) [ Last edited by kcdsw on 2006-6-17 at 15:44 ] 附件 163.rar (14.39 KiB) |
|
| 第15楼 kcdsw | 发表于 2006-06-17 15:51 |
| 中级用户 发帖 179 积分 404 | |
|
F:\Print\blogcn订单\用户单\163>if "17" == "day" call setp
此时不应有 <<。 F:\Print\blogcn订单\用户单\163>echo lineto/num num 1 sub def num 0 le{exit}if}lo op}bd/EmptyDict <<>> def >>cover3.txt |
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |