找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 124|回复: 14

bat如何对一个txt文件查找111替换成222

[复制链接]

23

主题

109

回帖

317

积分

中级会员

积分
317
发表于 2016-4-28 09:17:30 | 显示全部楼层 |阅读模式
bat如何对一个txt文件查找111替换成222

百度搜索的既然都不行;求高手指点;最好能贴完整的BAT脚本内容;谢谢。
回复

使用道具 举报

111

主题

4599

回帖

9573

积分

论坛元老

积分
9573
发表于 2016-4-30 01:10:59 | 显示全部楼层

namur 发表于 2016-4-29 20:36

能不能直接写给我,这些代码根本看不懂。。。
[ol]
  • @echo off
  • SetLocal EnableDelayedExpansion
  • set path=%1
  • set file=%2
  • set raw=%3
  • set replace=%4
  • set "file=%file:"=%"
  • for /f "delims=" %%i in ('dir /s/b "%path%" "%file%"') do (
  •         for /f "delims=" %%a in ('type "%%~fi"') do (
  •                 set "foo=%%a"
  •                 call,set foo=%%foo:%raw%=%replace%%%
  •                 call,echo/%%foo%%>>"%%~fi._"
  •         )
  •         move "%%~fi._" "%%~fi"
  • )[/ol]复制代码

    用法:
    将以上代码保存为 bat文件
    那么使用方法就是bat文件 "完整路径" "文件扩展名" 替换前内容 替换后内容
    举个栗子
    保存为bat.bat
    [ol]
  • bat.bat "G:\test\txt" "*.txt" 我是替换前的字符   我是替换后的字符 [/ol]复制代码

    代码缺点替换前和替换后的字符中不支持空格


    PS:嫌弃一下伸手党,脚本啊、代码啊。如果自己不去接触,不去了解,不去写。那永远都不可能会的。
  • 回复

    使用道具 举报

    3

    主题

    73

    回帖

    191

    积分

    注册会员

    积分
    191
    发表于 2016-4-29 20:36:00 | 显示全部楼层
    本帖最后由 houlai 于 2016-4-28 09:21 编辑

    ------------------------------


    shell用习惯了,忘了你是要bat
    回复

    使用道具 举报

    28

    主题

    427

    回帖

    976

    积分

    高级会员

    积分
    976
    发表于 2016-4-28 09:19:27 | 显示全部楼层
    1、创建一个sed.vbs文件,内容
    [ol]
  • Dim pat, patparts, rxp, inp
  • pat = WScript.Arguments(0)
  • patparts = Split(pat,"/")
  • Set rxp = new RegExp
  • rxp.Global = True
  • rxp.Multiline = False
  • rxp.Pattern = patparts(1)
  • Do While Not WScript.StdIn.AtEndOfStream
  •   inp = WScript.StdIn.ReadLine()
  •   WScript.Echo rxp.Replace(inp, patparts(2))
  • Loop[/ol]复制代码

    2、执行命令
    [ol]
  • cscript //NoLogo sed.vbs s/(111)/(222)/  outfile.txt
  • del inpfile.txt
  • ren outfile.txt inpfile.txt
  • [/ol]复制代码
  • 回复

    使用道具 举报

    3

    主题

    607

    回帖

    1227

    积分

    金牌会员

    积分
    1227
    发表于 2016-4-28 09:29:26 | 显示全部楼层

    cgs3238 发表于 2016-4-28 09:29

    1、创建一个sed.vbs文件,内容



    膜拜大神。
    回复

    使用道具 举报

    111

    主题

    4599

    回帖

    9573

    积分

    论坛元老

    积分
    9573
    发表于 2016-4-28 09:32:01 | 显示全部楼层
    [ol]
  • @echo off
  • setlocal enabledelayedexpansion
  • set file=文件路径
  • set "file=%file:"=%"
  • for %%i in ("%file%") do set file=%%~fi
  • echo.
  • set replaced=需替换原字符
  • echo.
  • set all=替换为
  • for /f "delims=" %%i in ('type "%file%"') do (
  •     set str=%%i
  •     set "str=!str:%replaced%=%all%!"
  •     echo !str!>>"%file%"_tmp.txt
  • )
  • copy "%file%" "%file%"_bak.txt >nul 2>nul
  • move "%file%"_tmp.txt "%file%"[/ol]复制代码
  • 回复

    使用道具 举报

    111

    主题

    4599

    回帖

    9573

    积分

    论坛元老

    积分
    9573
    发表于 2016-4-28 09:29:00 | 显示全部楼层
    当然也可以修改为
    [ol]
  • @echo off
  • setlocal enabledelayedexpansion
  • set file=%1
  • set "file=%file:"=%"
  • for %%i in ("%file%") do set file=%%~fi
  • echo.
  • set replaced=%2
  • echo.
  • set all=%3
  • for /f "delims=" %%i in ('type "%file%"') do (
  •     set str=%%i
  •     set "str=!str:%replaced%=%all%!"
  •     echo !str!>>"%file%"_tmp.txt
  • )
  • copy "%file%" "%file%"_bak.txt >nul 2>nul
  • move "%file%"_tmp.txt "%file%"[/ol]复制代码

    将以上代码保存为任意名称的bat  比如  mod.bat
    然后调用方法

    mod.bat  完整文件路径  原字符  替换后的字符
  • 回复

    使用道具 举报

    16

    主题

    406

    回帖

    864

    积分

    高级会员

    积分
    864
    发表于 2016-4-28 17:21:20 | 显示全部楼层
    Mark
    回复

    使用道具 举报

    14

    主题

    168

    回帖

    414

    积分

    中级会员

    积分
    414
    发表于 2016-4-28 17:25:10 | 显示全部楼层
    [ol]
  • grep -rl 旧字符 文件 | xargs sed -i 's/旧字符/新字符/g'
  • [/ol]复制代码

  • 回复

    使用道具 举报

    32

    主题

    479

    回帖

    1098

    积分

    金牌会员

    积分
    1098
    发表于 2016-4-28 17:57:11 | 显示全部楼层

    zyypp 发表于 2016-4-28 17:25

    当然也可以修改为

    牛啊,大哥,我一直有个问题,也是txt替换的,文件夹1下面有0到999个文件夹,0到999每个文件夹下都有很多txt文件,路径是这样的\txt\1\10\,\txt\1\11\ ,现在的问题是,我想批量替换这些txt内容,随便什么内容都可以。可以实现吗?
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Discuz! X

    GMT+8, 2025-2-3 16:10 , Processed in 0.019900 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表