Board logo

标题: [文本处理] set之类的命令查找替换字符串时如何支持正则呢? [打印本页]

作者: shenghuo    时间: 2013-7-28 09:15     标题: set之类的命令查找替换字符串时如何支持正则呢?

@echo off & setlocal enabledelayedexpansion

for /f "delims=" %%i in (2.txt) do (
set a=%%i
set a=!a:/=\n!
echo !a!>>en.txt
)
pause

怎么写 才可能让“\n”代表 换行呢?

本职是SEO,最近一直在学习DOS处理数据,多谢大牛们帮忙。。。
作者: weichenxiehou    时间: 2013-7-28 10:26

回复 1# shenghuo
  1. @echo off&setlocal enabledelayedexpansion
  2. set NLM=^
  3. set NL=^^^%NLM%%NLM%^%NLM%%NLM%
  4. for /f "delims=" %%i in (2.txt) do (
  5.   set a=%%i
  6.   set a=!a:/=%NL%!
  7. echo !a!>>en.txt
  8. )
  9. pause
复制代码

作者: shenghuo    时间: 2013-7-28 12:24

回复 2# weichenxiehou


    没有替换词 换行啊
作者: Batcher    时间: 2013-7-28 13:29

回复 3# shenghuo


    请把你的测试数据和测试结果贴出来看看
作者: shenghuo    时间: 2013-7-30 16:46

回复 4# Batcher


执行后,使用editplus打开
记事本打开

这是为什么呢
作者: CrLf    时间: 2013-7-30 17:38

本帖最后由 CrLf 于 2013-7-30 18:39 编辑

回复 5# shenghuo


    因为你顶楼说的 \n 是换行符,回车换行 \r\n 才是记事本中看到的换行效果,小改下 2 楼超人的代码:
  1. @echo off&setlocal enabledelayedexpansion
  2. set NLM=^
  3. for /f %%D in ('copy /z %0 nul') do (
  4. for %%A in ("%%D!NLM!") do (
  5. for /f "delims=" %%i in (a.txt) do (
  6. set a=%%i
  7. set "a=!a:/=%%~A!"
  8. echo !a!>>en.txt
  9. )
  10. )
  11. )
  12. pause
复制代码

作者: 522235677    时间: 2013-7-30 17:45

没明白楼主的意思,把/替换为\n ?
还是替换为<br>?
作者: shenghuo    时间: 2013-7-30 18:10

回复 6# CrLf

   多谢,  不过上面这个代码 测试和2楼大神代码的结果一样啊

顺便咨询一下,DOS下这么写不对?
作者: CrLf    时间: 2013-7-30 18:27

回复 8# shenghuo


    -F"/"
作者: shenghuo    时间: 2013-7-30 18:38

回复 9# CrLf


    膜拜
作者: CrLf    时间: 2013-7-30 18:41

看来 CR 和 %NL% 的办法不能合用
6 楼代码已修改




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