[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如果将网址最后一个斜线后面的所有内容清除?

我现在举例,我的文本内容:
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 编辑 ]

额...你是说去掉最后一个 /  以及后面的内容吗?

TOP

本人不太懂代码,不过有个苯办法。
存为txt文件,一行一个,用excel打开,打开时选择以“/”字符做为分隔符号隔成一列一列的,比如:
http  www.baidu.com bbs apisf。。。
http www.11.com forumdispaly。。。
然后按列c排序,剩下的就知道了吧。

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

假如文件名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
)

TOP

@for /f "tokens=1,2,3 delims=/" %%i in (1.txt) do echo
%%i//%%j/%%k
pause

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (a.txt) do (
  3.     set "v=%%~dpi"
  4.     set "v=!v:%cd%\=!"
  5.     set "v=!v:\=/!"
  6.     set "v=!v:http:/=http://!"
  7.     echo !v!
  8. )
复制代码

TOP

来个vbs的,文本名自己改哈:
  1. Set fso = CreateObject("scripting.filesystemobject")
  2. vbstr = fso.OpenTextFile("a.txt", 1, 1).ReadAll()
  3. fso.DeleteFile("a.txt")
  4. For Each str In Split(vbstr, vbCrLf)
  5.   vbout = ""
  6.   For i = 0 To UBound(Split(str, "/"))-1
  7.     vbout = vbout & Split(str, "/")(i) & "/"
  8.   Next
  9.   fso.OpenTextFile("a.txt", 8, 1).WriteLine Replace(vbout, "http:/", "http://")
  10. Next
  11. Set fso = Nothing
  12. MsgBox "ok"
复制代码
***共同提高***

TOP

本帖最后由 batman 于 2011-5-25 23:10 编辑

再来一个正则的,我vbs正则很弱,当练习了:
  1. Set fso = CreateObject("scripting.filesystemobject")
  2. vbstr = fso.OpenTextFile("a.txt", 1, 1).ReadAll()
  3. Set RegEx = New RegExp
  4. regex.Global = True
  5. regex.Pattern = "(\w+://.*/)[^/]+" & vbCrLf
  6. vbstr = regex.Replace(vbstr, "$1" & vbCrLf)
  7. Set regex = Nothing
  8. fso.OpenTextFile("a.txt", 2, 1).Write vbstr
  9. Set fso = Nothing
  10. MsgBox "ok"
复制代码
***共同提高***

TOP

  1. @echo off
  2. for /f "tokens=1,2,3 delims=/" %%i in (1.txt) do (
  3. if "%%k"=="bbs" (echo %%i//%%j/%%k)
  4. else echo %%i//%%j)
  5. pause>nul
复制代码
智慧是创造财富的唯一保障!

TOP

本帖最后由 batman 于 2011-5-25 23:47 编辑

10# andy七少
如果是http://ww.bathome.net/123/123/12 ... page%3D1&page=1这样子的呢?
***共同提高***

TOP

再来个兼容一行多个url的正则,url间的分隔符只能为tab、空格以及其他空字符
  1. Set fso = CreateObject("scripting.filesystemobject")
  2. vbstr = fso.OpenTextFile("a.txt", 1, 1).ReadAll()
  3. Set RegEx = New RegExp
  4. regex.Global = True
  5. regex.Pattern = "(\w+://[^:\s]+/)[^/:\s]+"
  6. vbstr = regex.Replace(vbstr, "$1")
  7. Set regex = Nothing
  8. fso.OpenTextFile("a.txt", 2, 1).Write vbstr
  9. Set fso = Nothing
  10. MsgBox "ok"
复制代码
***共同提高***

TOP

挖坟?

如果是VBS的话。。。其实2个函数就好了啊,不用搞的那么复杂

Left(strlines(i),InStrRev(strlines(i),"/"))
  1. Const ForReading = 1
  2. Const ForWriting = 2
  3. Set objFSO = CreateObject("scripting.filesystemobject")
  4. Set objFile = objFSO.OpenTextFile("a.txt", ForReading, 1)
  5. vbstr = objFile.ReadAll()
  6. objFile.Close
  7. 'objFSO.DeleteFile("a.txt")
  8. Set objFile = objFSO.OpenTextFile("a.txt", ForWriting, 1)
  9. Dim strlines
  10. strlines=Split(vbstr, vbCrLf)
  11. For i = 0 To UBound(strlines)
  12.     IF Len(strlines(i))>0 Then
  13.         objFile.WriteLine Left(strlines(i),InStrRev(strlines(i),"/"))
  14.     End If
  15. Next
  16. objFile.Close
  17. Set objFile = Nothing
  18. Set objFSO = Nothing
  19. MsgBox "Finish"
复制代码

TOP

返回列表