Board logo

标题: [文本处理] BAT批处理怎样替换文件中的数字? [打印本页]

作者: qiaosha    时间: 2014-4-23 11:53     标题: BAT批处理怎样替换文件中的数字?

  1. @echo on
  2. set var1= FILEVERSION 6,5,2,0
  3. rem echo %var1%
  4. set var1=!var1:0=%a%!
  5. set var2= PRODUCTVERSION 6,5,2,0
  6. rem echo %var2%
  7. set var2=!var2:0=%a%!
  8. set var3=VersionInfoVersion=6.5.2.0
  9. rem echo %var3%
  10. set var3=!var3:0=%a%!
  11. echo !var1!>>DsoFramerEx.rc
  12. echo !var2!>>DsoFramerEx.rc
  13. echo !var3!>>DsoFramerEx.rc
复制代码
用此脚本每此都是添加到文件的末位,对批处理不是很熟悉,忘大神帮帮忙,谢谢了。。
作者: Batcher    时间: 2014-4-23 12:26

请把替换之前的文本内容和替换之后的文本内容分别发出来看看
作者: qiaosha    时间: 2014-4-23 13:15

我引用文件中的一段话:文件附件上传不上来,被公司网络禁止了,
替换前:#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,5,2,0
PRODUCTVERSION 6,5,2,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L

替换后:#ifndef _MAC
/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 6,5,2,10374
PRODUCTVERSION 6,5,2,10374
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
作者: terse    时间: 2014-4-23 16:03

没有对0在行中 位置的判断 ;行中关键词自己添加
  1. @echo off
  2. set "var=FILEVERSION PRODUCTVERSION VersionInfoVersion"
  3. set "a=10374"
  4. (for /f "delims=" %%i in ('findstr /in .* "C.txt"') do (
  5.     set str=%%i
  6.     setlocal enabledelayedexpansion
  7.     set "str=!str:*:=!"
  8.     if defined str for %%j in (%var%) do (
  9.         if defined a if "!str:%%j=!" neq "!str!" (
  10.            set a=&set "str=!str:0=%a%!"
  11.         )
  12.     )
  13.     echo;!str!&endlocal
  14. ))>$
  15. move $ "C.txt"
  16. pause
复制代码

作者: qiaosha    时间: 2014-4-24 09:06

大神太牛了,可以替换数字了,
还有一个问题,我需要在一个文件夹下面查找所有相关的.txt文件,然后吧这些查找出来的文件进行数字替换,怎么使用啊?
作者: terse    时间: 2014-4-24 19:23

回复 5# qiaosha
这样试下
  1. @echo off
  2. set "var=FILEVERSION PRODUCTVERSION VersionInfoVersion"
  3. set "a=10374"
  4. for /f "delims=" %%a in ('dir /a-d /b *.txt') do (
  5.     (for /f "delims=" %%i in ('findstr /in .* "%%a"') do (
  6.          set str=%%i
  7.          setlocal enabledelayedexpansion
  8.          set "str=!str:*:=!"
  9.          if defined str for %%j in (%var%) do (
  10.             if defined a if "!str:%%j=!" neq "!str!" (
  11.                set a=&set "str=!str:0=%a%!"
  12.             )
  13.          )
  14.          echo;!str!&endlocal
  15.      ))>$
  16.      move $ "%%a"
  17. )
  18. pause
复制代码

作者: qiaosha    时间: 2014-4-25 14:28

回复 6# terse


    这个代码好像是同级的.txt文件可以替换,我需要找到这个目录下所有的目录的txt文件可以进行替换。
作者: terse    时间: 2014-4-25 20:14

回复 7# qiaosha

'dir  加S参数呢?
作者: qiaosha    时间: 2014-4-28 18:00

回复 8# terse


    可以的,谢谢了!




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