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

Windows 批处理文件替换文件中的字符,windows,batch-file,Windows,Batch File,我已经有一段时间没有写批处理文件了。我以前经常玩它,但现在我需要写一个,我迷路了。谁能帮我一把吗?我需要编写具有以下要求的批处理文件: 它将在Windows中运行 它应该将文件名作为唯一的参数 它应该只搜索文件中的前100个字符,并用一个星号、两个空格和最后一个星号替换出现的两个连续星号*** 老:那只敏捷的棕色f**ox跳过了什么东西 新:那只棕色的野牛跳过了什么东西 文件的新版本应另存为原始文件名加上子文件夹的.new 原始文件名C:\Myfolder\myfile.txt 新文件名

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

  • 它将在Windows中运行
  • 它应该将文件名作为唯一的参数
  • 它应该只搜索文件中的前100个字符,并用一个星号、两个空格和最后一个星号替换出现的两个连续星号
    ***
    • 老:
      那只敏捷的棕色f**ox跳过了什么东西
    • 新:
      那只棕色的野牛跳过了什么东西
  • 文件的新版本应另存为原始文件名加上子文件夹的.new
    • 原始文件名
      C:\Myfolder\myfile.txt
    • 新文件名
      C:\Myfolder\NewFolder\myfile.txt.new

感谢您的帮助。

请使用
sed
的本机端口

GnuWin32包括一个:

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%

1.安装cygwin。2.使用sed/awkIf如果需要对多个文件执行此操作,为什么不使用Notepad++/Eclipse/其他多文件文本编辑器之类的工具来执行搜索和替换…?我无法运行cygwin,因为批处理文件将从另一个Windows应用程序中调用。