批处理文件替换文件中的字符

时间:2012-11-14 21:57:12

标签: windows batch-file

我写了一个批处理文件已经有一段时间了。我过去经常在白天玩它,但现在我需要写一个,我迷路了。任何人都可以帮我一把吗?我需要编写一个包含以下要求的批处理文件:

  • 它将在Windows中运行
  • 应该将文件名作为唯一参数
  • 它应该只搜索文件中的前100个字符,并且应该用两个星号,两个空格和一个最终的星号**替换两个连续星号* *的出现次数。
    • OLD:The quick brown f**ox jumped over something
    • 新:The quick brown f* *ox jumped over something
  • 该文件的新版本应保存为原始文件名加上.new到子文件夹
    • 原始文件名C:\Myfolder\myfile.txt
    • 新文件名C:\Myfolder\NewFolder\myfile.txt.new

任何和所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

使用sed的原生端口。

GnuWin32包含一个:http://gnuwin32.sourceforge.net/

Git的Windows端口也是如此。

以下假设您使用的是ASCII文本文件:100个字节== 100个字符。

@echo off
set output_file=%input_file%.new
set end_of_header=5
set /a start_of_body=%end_of_header% + 1

head --bytes=%end_of_header% ^
    %input_file% ^
    | sed --expression "s/\*\*/*  */g" ^
    1> %output_file%

tail --bytes=+%start_of_body% ^
    %input_file% ^
    1>> %output_file%

type %input_file% %output_file%