Board logo

标题: [文本处理] 批处理如何以最后一个“/”为分隔符提取前面的内容? [打印本页]

作者: achao0539    时间: 2010-8-16 13:31     标题: 批处理如何以最后一个“/”为分隔符提取前面的内容?

如何以最后一个“/“为分隔符。提取前面的内容?
http://pli6.999pcs.com/yinge06/lj/bbs/ShowPost.asp?ThreadID=406
变成http://pli6.999pcs.com/yinge06/lj/bbs/
作者: CUer    时间: 2010-8-16 14:03

  1. gawk "BEGIN{FS=OFS=\"/\"}{NF=NF-1}1" 1.txt
复制代码

作者: zcydez    时间: 2010-8-16 14:05     标题: 回复 2楼 的帖子

Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\Administrator>gawk /?
'gawk' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Documents and Settings\Administrator>
作者: Batcher    时间: 2010-8-16 14:58     标题: 回复 3楼 的帖子

自己去下载一个吧
作者: achao0539    时间: 2010-8-16 17:39

批处理没办法吗,我想用批处理
作者: qq106942397    时间: 2010-8-16 20:50

  1. @echo off&setlocal enabledelayedexpansion
  2. set "T=%cd%"
  3. echo.http://pli6.999pcs.com/yinge06/lj/bbs/ShowPost.asp?ThreadID=406>1.txt
  4. echo.c:\ssdw;jfd\sdfl23\ddd>>1.txt
  5. for /f "tokens=* delims=" %%a in ('type 1.txt') do (
  6. set "TT=%%~dpa"
  7. set "TT=!TT:%T%=!"
  8. set "TT=!TT:\http:\=http:\\!"
  9. if "!TT:~,4!"=="http" set "TT=!TT:\=/!"
  10. echo !TT!
  11. )
  12. pause
  13. exit
复制代码

作者: ZJHJ    时间: 2010-8-17 11:24

可以生成反序来取啊,不就是第一个吗
作者: Batcher    时间: 2010-8-17 13:28

  1. @echo off
  2. for /f "delims=" %%a in (1.txt) do (
  3.     set "strOri=%%a"
  4.     setlocal enabledelayedexpansion
  5.     call :Rev "!strOri!"
  6.     set "strCut=/!strRev:*/=!"
  7.     call :Rev "!strCut!"
  8.     echo,!strRev!
  9.     endlocal
  10. )
  11. goto :eof
  12. :Rev
  13. set "strArg=%~1"
  14. set strLen=0
  15. for /f "skip=1 delims=:" %%i in ('^(echo "!strArg!"^&echo.^)^|findstr /o ".*"') do (
  16.     set /a strLen=%%i-5
  17. )
  18. set /a strPoint=strLen-1
  19. set strRev=
  20. for /l %%i in (!strPoint!,-1,0) do (
  21.     set strRev=!strRev!!strArg:~%%i,1!
  22. )
  23. goto :eof
复制代码

作者: 随风    时间: 2010-8-17 23:31

  1. @echo off
  2. set "lj=%cd%"
  3. for /f "delims=" %%a in (a.txt) do (
  4.    set str=%%~dpa
  5.    setlocal enabledelayedexpansion
  6.    echo !str:*%cd%\=!
  7.    endlocal
  8. )
  9. pause
复制代码

作者: achao0539    时间: 2010-8-20 14:23

有个问题,发现随风提出来的成了这样的 http:\pli6.999pcs.com/yinge06/lj/bbs/而不是这样的 http://pli6.999pcs.com/yinge06/lj/bbs/   
双斜杠变成了反向的单斜杠。所以很多网址打不开




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