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



我已经有一段时间没有写批处理文件了。我以前经常玩它,但现在我需要写一个,我迷路了。谁能帮我一把?我需要编写具有以下要求的批处理文件:

  • 它将在Windows中运行
  • 它应该将文件名作为唯一的参数
  • 它应仅搜索文件中的前 100 个字符,并应将出现的两个连续星号**替换为一个星号、两个空格和一个最后一个星号* *
    • 旧:The quick brown f**ox jumped over something
    • 新增:The quick brown f* *ox jumped over something
  • 文件的新版本应另存为原始文件名加上 .new 到子文件夹
    • 原始文件名C:Myfoldermyfile.txt
    • 新文件名C:MyfolderNewFoldermyfile.txt.new

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

使用本机端口 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%

最新更新