![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 22:40 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教如何在变量中查找字符?(未解决) |
| 可打印版本 813 / 11 |
| 第1楼 bat-zw | 发表于 2008-03-30 19:02 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
请教如何在变量中查找字符?(未解决) 我有个批处理需要在变量中判断是否含有指定字符,如下:
echo off for /f "skip=2 tokens=*" %%i in ('findstr "." a.bat') do ( set str=%%i setlocal enabledelayedexpansion findstr "!" !str! if errorlevel 1 set str=!str:a=b! echo !str! >>a.txt endlocal ) 可执行时总提示findstr不能打开......也就不能进行判断了,只好请教大家了。 [ Last edited by zw19750516 on 2008-3-30 at 11:00 PM ] |
|
| 第2楼 huahua0919 | 发表于 2008-03-30 19:06 |
| 银牌会员 发帖 780 积分 1,608 | |
|
为什么一定要这样呢?
echo !str!|findstr "!" 不行吗?? |
|
| 第3楼 sylovanas | 发表于 2008-03-30 19:33 |
| 初级用户 发帖 42 积分 107 | |
|
findstr "!" !str!
表示findstr要寻找 档案名称为!str!变量值的档案,然后在那档案中寻找!这个字串 但实际上str变量并没有产生档案 所以会无法执行 |
|
| 第4楼 bat-zw | 发表于 2008-03-30 19:42 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by huahua0919 at 2008-3-30 19:06: 这样是达不到效果的,只会显示每个变量+|findstr "!"字符。 |
|
| 第5楼 huahua0919 | 发表于 2008-03-30 19:49 |
| 银牌会员 发帖 780 积分 1,608 | |
|
具体什么用处,我还不是很明白,代码帖出来看看,也许有其他解决途径
|
|
| 第6楼 bat-zw | 发表于 2008-03-30 19:56 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
问题还是未得到解决,好像findstr不能实现这样的查找,是不是它的一个bug啊? [ Last edited by zw19750516 on 2008-3-30 at 11:02 PM ] |
|
| 第7楼 huahua0919 | 发表于 2008-03-30 20:02 |
| 银牌会员 发帖 780 积分 1,608 | |
|
我看效果一样
|
|
| 第8楼 abcd | 发表于 2008-03-30 20:06 |
| 银牌会员 发帖 739 积分 1,436 | |
|
有必要这么麻烦吗?
for /f "skip=2 tokens=*" %%i in ('findstr "." a.bat') do ( set str=%%i echo %%i|findstr "!">nul&&call,echo %%str:a=b%%>>a.txt ) 不就行了?? |
|
| 第9楼 balinger | 发表于 2008-03-30 20:10 |
| 中级用户 发帖 115 积分 356 | |
|
if "%str:!=%"=="%str%" (echo 无!) else (echo 有!)
|
|
| 第10楼 bat-zw | 发表于 2008-03-30 20:24 |
| 金牌会员 发帖 1,276 积分 3,105 | |
Originally posted by abcd at 2008-3-30 20:06: 如这样的话,不包含"!"的变量就全丢了啊,我的意思是对a.bat中的每行进行数次字符替换,如果行中包含"!"字符就不替换,把结果全输入到a.txt中。 |
|
| 第11楼 bat-zw | 发表于 2008-03-30 20:26 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
原始部分代码如下: [ Last edited by zw19750516 on 2008-3-30 at 11:06 PM ] |
|
| 第12楼 knoppix7 | 发表于 2008-03-30 21:07 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
小心 setlocal enabledelayedexpansion
对!的错误扩充。很.... |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |