标题: [文本处理] 求助:BAT如何查找WINDOWS目录下所有子目录内特定文本里的字符串,并替换第二行? [打印本页]
作者: gyghw 时间: 2013-12-7 18:49 标题: 求助:BAT如何查找WINDOWS目录下所有子目录内特定文本里的字符串,并替换第二行?
本帖最后由 gyghw 于 2013-12-8 02:09 编辑
BAT如何查找WINDOWS目录下的子目录(所有子目录)内的特定文本里的字符串,并替换第二行?
如:替换 C\windows目录下的子目录里(所有子目录)的文件,子目录文件夹名字不确定
c:\windows\123\1.txt
c:\windows\223\223\123.txt
......
......
......
1.txt 内容如下
第一行:00000.00000.00000
第二行:10101.20202.30303 把第二行替换为60606.60606.60606
作者: 再世情緣 时间: 2013-12-8 11:32
- @echo off &color 0a &setlocal enabledelayedexpansion
- Rem 把需要查找的txt文本名称列到本批处理 Rem 文本名称 标记后面,并把 Rem 文本名称该行的行数设为变量ln
- set /a "ln=32"
- :main
- pushd "%systenroot%"
- for /f "delims=" %%a in ('more "%~f0" +%ln%') do (
- set "txt=%%a"
- for /f "delims=" %%b in ('dir /b /a -d /s "!txt!" 2^>nul') do (
- set "txtname=%%~fb" &&set "txtpath=%%~pb" &&set "name=%%~nxb"
- if exist "!txtname!" (
- echo.文件目录:!txtpath!
- set /p=重新写入文件:!name! -^> !name!.new . . . <nul
- if exist "!txtpath!\!name!.new" (echo.!name!.new文件冲突.&pause.)
- set /a "i=0"
- for /f "usebackq delims=" %%i in ("!txtname!") do (
- set /a "i+=1"
- if !i! EQU 2 (echo.60606.60606.60606) else (echo.%%i)
- )>>"!txtpath!\!name!.new"
- if exist "!txtpath!\!name!.new" (
- set /p=写入成功 . . . <nul
- del /q /f "!txtname!" &&ren "!txtpath!\!name!.new" "!name!"
- if exist "!txtpath!\!name!.new" (echo.重命名失败) else (echo.重命名成功)
- ) else (echo.写入失败)
- ) else (echo.未找到文件 !txt!)
- set "txtname=" &set "txtpath=" &set "name="
- )
- set "txt="
- )
- pause.
- call exit
-
- Rem 文本名称
- 1.txt
- 2.txt
- 5.txt
- 8.txt
复制代码
哥们试下,
把需要查找的txt文本名称列到本批处理 “Rem 文本名称” 标记后面,并把 Rem 文本名称该行的行数设为变量ln,变量一定要设置正确,不然会查找不完整,一个名字一个回车
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |