Board logo

标题: [文本处理] [已解决]批处理怎么过滤指定字符和重复项以及怎么替换 [打印本页]

作者: linjuming    时间: 2009-8-16 20:26     标题: [已解决]批处理怎么过滤指定字符和重复项以及怎么替换

8-16 22:00更新
问题一其实是http://www.bathome.net/thread-5553-1-1.html的延续,我按超级版主的代码镶嵌到我自己的代码中去,结果为空,请帮忙看看那里除了问题:
  1. @echo off
  2. for /f "delims=" %%i in ('dir /b *.css') do (
  3.         echo.
  4.         echo.
  5.         echo.
  6.         echo %%i
  7.         echo ----------------------------------------------------------------------------
  8.     for /f "delims=" %%m in ('findstr "url" %%i') do (
  9.         for /f "delims=() tokens=2" %%j in ("%%m") do (
  10.                 @echo off&setlocal enabledelayedexpansion
  11.                 for /f "skip=2 delims=" %%a in (%%j) do (
  12.                         set "str=%%a"
  13.                         if "!str:~,2!" neq ".." (
  14.                         if not defined _%%a echo %%a&set "_%%a=a"
  15.                         )
  16.                 )
  17.         pause>nul
  18.         )
  19.     )
  20. )
  21. pause
复制代码


=====================================================================
问题一
怎样过滤掉蓝色部分和重复项目?
我用findstr [^..]
过滤../images/stit.jpg无效。
-----------------------------------------------------------------------------------------------------
"all.css"
"head.css"
star.gif
star.gif
mall_bg.gif
mall_bg.gif
mall_bg.gif
mall_bg.gif
mimid.gif
m-s-p.jpg
mall_bg.gif
../images/stit.jpg
mh2-bg.jpg
modulem.gif
mall_bg.gif
mall_bg.gif
fs.gif
../images/sid.gif
background.png
dot6.gif
mall_bg.gif
fs.gif
modulem.gif
dot6.gif
i-c.jpg
hot.jpg
../images/s-h5.jpg
../images/list-tit-bg.jpg
../images/list-tit-bg.jpg
mm.jpg
mm.jpg
mm.jpg
mm.jpg
mall_bg.gif
ehx_mid.gif
---------------------------------------------------------------------------------------------------------



我用 set str=%str*=% 无法删掉红色部分代码,应该怎么删?
------------------------------------------------------------------------------------------------------
.mh4 table img{width:218px;height:84px;background:url(mh4-link.jpg) no-repeat}
------------------------------------------------------------------------------------------------------

[ 本帖最后由 linjuming 于 2009-8-20 17:46 编辑 ]
作者: batman    时间: 2009-8-16 21:53     标题: 回复 1楼 的帖子

第一个问题:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "skip=2 delims=" %%a in (a.txt) do (
  3.     set "str=%%a"
  4.     if "!str:~,2!" neq ".." (
  5.        if not defined _%%a echo %%a&set "_%%a=a"
  6.     )
  7. )
  8. pause>nul
复制代码
第二个问题:
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str=.mh4 table img{width:218px;height:84px;background:url(mh4-link.jpg) no-repeat}"
  3. echo !str:*)=!
  4. pause>nul
复制代码

作者: keen    时间: 2009-8-16 21:57     标题: 回复 2楼 的帖子

第二个问题人家要删除红色部分。
作者: batman    时间: 2009-8-16 22:08     标题: 回复 3楼 的帖子

汗水....如此再替换一次就是的:
  1. @echo off
  2. set "str=.mh4 table img{width:218px;height:84px;background:url(mh4-link.jpg) no-repeat}"
  3. set "a=%str:*)=%"
  4. call,echo %%str:%a%=%%
  5. pause>nul
复制代码

作者: zqz0012005    时间: 2009-8-16 22:14

findstr不是那么用的,好吧?
  1. findstr /v "^\.\." a.txt
复制代码
  1. findstr /v "^[.][.]" a.txt
复制代码
开头那两行为什么也要过滤?要遵循什么规则?老实交待!
作者: linjuming    时间: 2009-8-16 22:24

开头两行不是图片啊,问题更新了,帮我看看怎么解决
作者: linjuming    时间: 2009-8-16 22:26

findstr /v中的 /v是什么意思,我在api那里看不到有 /v 选项
作者: 基拉freedom    时间: 2009-8-16 22:28

问一下
batman的第一个代码是怎么样去除重复部分代码的...没看懂
作者: Batcher    时间: 2009-8-16 22:45     标题: 回复 7楼 的帖子

/V         Prints only lines that do not contain a match.

你是采用何种方法查看API的呢?
作者: Lumiere    时间: 2009-8-16 22:50     标题: 回复 8楼 的帖子

if not defined 这句,没有定义_%%a的话就定义其为a,下次如果再遇到就变成已经定义了,那么if not defined后面的部分就不会执行了。
作者: linjuming    时间: 2009-8-16 22:51

看到了,有/v ,我看的是 ”批处理阶段教程奥运版【英雄出品】“
原来不全的,系统自带的有/v选项
作者: defanive    时间: 2009-8-16 22:55

不过奥运教程的进阶部分很有看头呢。。。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2