标题: 请教如何在变量中查找字符?(未解决)
[打印本页]
作者: bat-zw
时间: 2008-3-30 19:02
标题: 请教如何在变量中查找字符?(未解决)
我有个批处理需要在变量中判断是否含有指定字符,如下:
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 ]
作者: huahua0919
时间: 2008-3-30 19:06
为什么一定要这样呢?
echo !str!|findstr "!" 不行吗??
作者: sylovanas
时间: 2008-3-30 19:33
findstr "!" !str!
表示findstr要寻找 档案名称为!str!变量值的档案,然后在那档案中寻找!这个字串
但实际上str变量并没有产生档案
所以会无法执行
作者: bat-zw
时间: 2008-3-30 19:42
Quote: |
Originally posted by huahua0919 at 2008-3-30 19:06:
为什么一定要这样呢?
echo !str!|findstr "!" 不行吗?? |
|
这样是达不到效果的,只会显示每个变量+|findstr "!"字符。
作者: huahua0919
时间: 2008-3-30 19:49
具体什么用处,我还不是很明白,代码帖出来看看,也许有其他解决途径
作者: bat-zw
时间: 2008-3-30 19:56
echo off
for /f "skip=2 tokens=*" %%i in ('findstr "." a.bat') do (
set str=%%i
setlocal enabledelayedexpansion
echo !str! >temp.txt
findstr "!" temp.txt
del temp.txt
if errorlevel 1 set str=!str:a=b!
echo !str! >>a.txt
endlocal
)
问题还是未得到解决,好像findstr不能实现这样的查找,是不是它的一个bug啊?
[
Last edited by zw19750516 on 2008-3-30 at 11:02 PM ]
作者: huahua0919
时间: 2008-3-30 20:02
我看效果一样
作者: abcd
时间: 2008-3-30 20:06
有必要这么麻烦吗?
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
)
不就行了??
作者: balinger
时间: 2008-3-30 20:10
if "%str:!=%"=="%str%" (echo 无!) else (echo 有!)
作者: bat-zw
时间: 2008-3-30 20:24
Quote: |
Originally posted by abcd at 2008-3-30 20:06:
有必要这么麻烦吗?
for /f "skip=2 tokens=*" %%i in ('findstr "." a.bat') do (
set str=%%i
echo %%i|findstr "!">nul&&call,echo %%str:a=b%%> ... |
|
如这样的话,不包含"!"的变量就全丢了啊,我的意思是对a.bat中的每行进行数次字符替换,如果行中包含"!"字符就不替换,把结果全输入到a.txt中。
作者: bat-zw
时间: 2008-3-30 20:26
标题: 原始部分代码如下:
for /f "skip=2 tokens=*" %%i in ('findstr "." a.bat') do (
set str=%%i
setlocal enabledelayedexpansion
echo !str! >temp.txt
findstr "!" temp.txt
if errorlevel 0 goto echo
set str=!str:a=犇!
set str=!str:b=猋!
set str=!str:c=骉!
set str=!str:d=蟲!
set str=!str:e=麤!
set str=!str:f=毳!
set str=!str:g=淼!
set str=!str:h=掱!
set str=!str:i=焱!
set str=!str:j=垚!
set str=!str:k=煊!
set str=!str:l=烜!
set str=!str:m=煐!
set str=!str:n=焓!
set str=!str:o=烓!
set str=!str:p=焺!
set str=!str:q=瓛!
set str=!str:r=炜!
set str=!str:s=翙!
set str=!str:t=燚!
set str=!str:u=焜!
set str=!str:v=琰!
set str=!str:w=燊!
set str=!str:x=眚!
set str=!str:y=奡!
set str=!str:z=慤!
:echo
del temp.txt
echo !str! >>a.txt
endlocal
)
[
Last edited by zw19750516 on 2008-3-30 at 11:06 PM ]
作者: knoppix7
时间: 2008-3-30 21:07
小心 setlocal enabledelayedexpansion
对!的错误扩充。很....