Board logo

标题: [文本处理] [已解决]批处理怎样将指定字符串值写入文本文件? [打印本页]

作者: 447219071    时间: 2015-9-25 10:13     标题: [已解决]批处理怎样将指定字符串值写入文本文件?

本帖最后由 447219071 于 2015-10-8 21:53 编辑

求批处理:将A.htm文件内CPULINK字符串后后的值导出另生成A.TXT
A.htm内容如下:
  1. <div>cpulink=http://www.1.com</div>
  2. <p>cpulink=http://www.2.com<br />
  3. <div>cpulink=http://www.3.com</div>
  4. <p>cpulink=http://www.4.com<br />
复制代码
尽量不要第三方工具
只是提供个思路:查找cpulink后的值,截至字符“<”
生成A.TXT文件内容如下,每个值为一断行(注意:没有空行,三楼的结果页生成的文本文件最后有一个空行):
  1. http://www.1.com
  2. http://www.2.com
  3. http://www.3.com
  4. http://www.4.com
复制代码
本人为批处理菜鸟,请各位大大帮忙
作者: pcl_test    时间: 2015-9-25 13:13

  1. ::先下载第三方http://batch-cn.qiniudn.com/tool/2.5.1/grep.exe
  2. grep -oP "(?<=cpulink=)[^<]+" "A.htm">"A.txt"
复制代码

作者: terse    时间: 2015-9-25 15:36

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in (A.htm) do (
  3.     set "str=%%i"
  4.     set "str=!str:*cpulink=!"
  5.     if "!str!" neq "%%i" if "!str:~,1!" == "=" (
  6.        for /f "delims==<" %%i in ("!str!") do echo %%i
  7.     )
  8. ))>A.txt
  9. pause
复制代码
JS 混编
  1. @if(0)==(0) echo off & cscript -NoLogo -E:JScript %0 <a.htm >a.txt & pause & exit  @end
  2. var reg = /cpulink=([^<]+)/ig;
  3. while (!WScript.StdIn.AtEndOfStream){
  4.     var str = WScript.StdIn.ReadLine();
  5.     var s = str.match(/cpulink=([^<]+)/);
  6.     if (s) {  WSH.Echo(s[1]) };
  7. }
复制代码

作者: 447219071    时间: 2015-9-26 00:58

回复 3# terse
高手,请问不要最后一行的空行,行吗?
作者: /zhqsystem/zhq    时间: 2015-9-26 02:52

@echo off&color 0e
(for /f "tokens=1,* delims==" %%i in (A.htm.txt) do (
for /f "tokens=1,* delims=^<" %%k in ("%%j") do (
  echo=%%k|findstr/i "^http">nul2>nul&&(
   echo=%%k
  )
))
)>new_A.htm
pause
作者: shenlong    时间: 2015-10-2 19:17

回复 1# 447219071


    来一个简单的:
for /f "tokens=1-5 delims=<=> " %%a in (a.htm) do echo.%%c>>a.txt




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