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

[文本处理] 求助: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

  1. @echo off &color 0a &setlocal enabledelayedexpansion
  2. Rem 把需要查找的txt文本名称列到本批处理 Rem 文本名称 标记后面,并把 Rem 文本名称该行的行数设为变量ln
  3. set /a "ln=32"
  4. :main
  5. pushd "%systenroot%"
  6. for /f "delims=" %%a in ('more "%~f0" +%ln%') do (
  7.   set "txt=%%a"
  8.   for /f "delims=" %%b in ('dir /b /a -d /s "!txt!" 2^>nul') do (
  9.     set "txtname=%%~fb" &&set "txtpath=%%~pb" &&set "name=%%~nxb"
  10.     if exist "!txtname!" (
  11.       echo.文件目录:!txtpath!
  12.       set /p=重新写入文件:!name! -^> !name!.new . . . <nul
  13.       if exist "!txtpath!\!name!.new" (echo.!name!.new文件冲突.&pause.)
  14.       set /a "i=0"
  15.       for /f "usebackq delims=" %%i in ("!txtname!") do (
  16.         set /a "i+=1"
  17.         if !i! EQU 2 (echo.60606.60606.60606) else (echo.%%i)
  18.       )>>"!txtpath!\!name!.new"
  19.       if exist "!txtpath!\!name!.new" (
  20.         set /p=写入成功 . . . <nul
  21.         del /q /f "!txtname!" &&ren "!txtpath!\!name!.new" "!name!"
  22.         if exist "!txtpath!\!name!.new" (echo.重命名失败) else (echo.重命名成功)
  23.       ) else (echo.写入失败)
  24.     ) else (echo.未找到文件 !txt!)
  25.     set "txtname=" &set "txtpath=" &set "name="
  26.   )
  27.   set "txt="
  28. )
  29. pause.
  30. call exit
  31. Rem 文本名称
  32. 1.txt
  33. 2.txt
  34. 5.txt
  35. 8.txt
复制代码
哥们试下,
   把需要查找的txt文本名称列到本批处理 “Rem 文本名称” 标记后面,并把 Rem 文本名称该行的行数设为变量ln,变量一定要设置正确,不然会查找不完整,一个名字一个回车

TOP

返回列表