标题: [文本处理] 批处理如果将网址最后一个斜线后面的所有内容清除? [打印本页]
作者: ljfa0 时间: 2010-8-12 13:07 标题: 批处理如果将网址最后一个斜线后面的所有内容清除?
我现在举例,我的文本内容:
http://www.baidu.com/bbs/apisfjdpasdfpj.htm
http://www.soso.com/bbs/forumdisplay.php?fid=119
http://www.11.com/forumdisplay.php?fid=119
http://www.22.com/bbs/forumdisplay.php?fid=119
http://www.33.com/forumdisplay.php?fid=119
运行完批处理后要这样的效果:
http://www.baidu.com/bbs/
http://www.soso.com/bbs/
http://www.11.com/
http://www.22.com/bbs/
http://www.33.com/
将/bbs和/com后面的版面代码去掉,但是/bbs不要去掉,网址后面没有/bbs的也别添上去。
我不懂批处理,谁能帮我写个批处理,小弟在这万分感谢!我没有发广告,上面的网址全是乱打上去的,这些网页根本不存在。
[ 本帖最后由 ljfa0 于 2010-8-12 16:00 编辑 ]
作者: wankoilz 时间: 2010-8-12 13:33
额...你是说去掉最后一个 / 以及后面的内容吗?
作者: qq1178662380 时间: 2010-8-12 13:40
本人不太懂代码,不过有个苯办法。
存为txt文件,一行一个,用excel打开,打开时选择以“/”字符做为分隔符号隔成一列一列的,比如:
http www.baidu.com bbs apisf。。。
http www.11.com forumdispaly。。。
然后按列c排序,剩下的就知道了吧。
作者: Batcher 时间: 2010-8-21 00:49
同样的问题:
http://bbs.bathome.net/thread-8965-1-1.html
作者: czjt1234 时间: 2010-8-21 17:48
假如文件名22.txt
@echo off
for /f "tokens=1,2,3 delims=/" %%i in (22.txt) do (
if /i %%k equ bbs echo %%i//%%j/%%k>>11.txt
if /i %%k neq bbs echo %%i//%%j>>11.txt
)
作者: qq506657335 时间: 2010-8-22 14:01
@for /f "tokens=1,2,3 delims=/" %%i in (1.txt) do echo
%%i//%%j/%%k
pause
作者: lvsehuaxue 时间: 2011-5-25 21:11
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%i in (a.txt) do (
- set "v=%%~dpi"
- set "v=!v:%cd%\=!"
- set "v=!v:\=/!"
- set "v=!v:http:/=http://!"
- echo !v!
- )
复制代码
作者: batman 时间: 2011-5-25 21:57
来个vbs的,文本名自己改哈:- Set fso = CreateObject("scripting.filesystemobject")
- vbstr = fso.OpenTextFile("a.txt", 1, 1).ReadAll()
- fso.DeleteFile("a.txt")
- For Each str In Split(vbstr, vbCrLf)
- vbout = ""
- For i = 0 To UBound(Split(str, "/"))-1
- vbout = vbout & Split(str, "/")(i) & "/"
- Next
- fso.OpenTextFile("a.txt", 8, 1).WriteLine Replace(vbout, "http:/", "http://")
- Next
- Set fso = Nothing
- MsgBox "ok"
复制代码
作者: batman 时间: 2011-5-25 22:17
本帖最后由 batman 于 2011-5-25 23:10 编辑
再来一个正则的,我vbs正则很弱,当练习了:- Set fso = CreateObject("scripting.filesystemobject")
- vbstr = fso.OpenTextFile("a.txt", 1, 1).ReadAll()
- Set RegEx = New RegExp
- regex.Global = True
- regex.Pattern = "(\w+://.*/)[^/]+" & vbCrLf
- vbstr = regex.Replace(vbstr, "$1" & vbCrLf)
- Set regex = Nothing
- fso.OpenTextFile("a.txt", 2, 1).Write vbstr
- Set fso = Nothing
- MsgBox "ok"
复制代码
作者: andy七少 时间: 2011-5-25 23:27
- @echo off
- for /f "tokens=1,2,3 delims=/" %%i in (1.txt) do (
- if "%%k"=="bbs" (echo %%i//%%j/%%k)
- else echo %%i//%%j)
- pause>nul
复制代码
作者: batman 时间: 2011-5-25 23:44
本帖最后由 batman 于 2011-5-25 23:47 编辑
10# andy七少
如果是http://ww.bathome.net/123/123/12 ... page%3D1&page=1这样子的呢?
作者: batman 时间: 2011-5-26 00:01
再来个兼容一行多个url的正则,url间的分隔符只能为tab、空格以及其他空字符- Set fso = CreateObject("scripting.filesystemobject")
- vbstr = fso.OpenTextFile("a.txt", 1, 1).ReadAll()
- Set RegEx = New RegExp
- regex.Global = True
- regex.Pattern = "(\w+://[^:\s]+/)[^/:\s]+"
- vbstr = regex.Replace(vbstr, "$1")
- Set regex = Nothing
- fso.OpenTextFile("a.txt", 2, 1).Write vbstr
- Set fso = Nothing
- MsgBox "ok"
复制代码
作者: slore 时间: 2011-5-26 12:55
挖坟?
如果是VBS的话。。。其实2个函数就好了啊,不用搞的那么复杂
Left(strlines(i),InStrRev(strlines(i),"/"))- Const ForReading = 1
- Const ForWriting = 2
- Set objFSO = CreateObject("scripting.filesystemobject")
- Set objFile = objFSO.OpenTextFile("a.txt", ForReading, 1)
- vbstr = objFile.ReadAll()
- objFile.Close
- 'objFSO.DeleteFile("a.txt")
- Set objFile = objFSO.OpenTextFile("a.txt", ForWriting, 1)
- Dim strlines
- strlines=Split(vbstr, vbCrLf)
- For i = 0 To UBound(strlines)
- IF Len(strlines(i))>0 Then
- objFile.WriteLine Left(strlines(i),InStrRev(strlines(i),"/"))
- End If
- Next
- objFile.Close
- Set objFile = Nothing
- Set objFSO = Nothing
- MsgBox "Finish"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |