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

[文本处理] [已解决]批处理怎样将指定字符串值写入文本文件?

本帖最后由 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
复制代码
本人为批处理菜鸟,请各位大大帮忙

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

TOP

  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. }
复制代码
1

评分人数

TOP

回复 3# terse
高手,请问不要最后一行的空行,行吗?

TOP

@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

TOP

回复 1# 447219071


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

TOP

返回列表