我需要在文件夹内的每个 c 和 .h 文件中插入一行(版权行)。版权行需要在评论部分内这些文件的开头添加。
这些文件在开头已经有注释,例如
/**
Comments1
Comments2
**/
我需要在此评论部分的末尾添加我的版权行,如下所示:
/**
Comments1
Comments2
**Copyright xyz**
**/
如何使用批处理脚本或 python 脚本来做到这一点?
我需要在文件夹内的每个 c 和 .h 文件中插入一行(版权行)。版权行需要在评论部分内这些文件的开头添加。
这些文件在开头已经有注释,例如
/**
Comments1
Comments2
**/
我需要在此评论部分的末尾添加我的版权行,如下所示:
/**
Comments1
Comments2
**Copyright xyz**
**/
如何使用批处理脚本或 python 脚本来做到这一点?
使用名为 REPL.BAT的混合 JScript/批处理实用程序很简单,该实用程序在标准输入上执行正则表达式搜索和替换,并将结果写入标准输出。该实用程序是纯脚本,可在从 XP 开始的任何 Windows 机器上运行 - 不需要 3rd 方可执行文件。完整的文档嵌入在实用程序脚本中。
假设 REPL.BAT 在您当前的文件夹中,或者更好的是,在您的 PATH 中的某个位置:
@echo off
setlocal
set "copyright=**Copyright xyz**"
for %%F in (*.h *.c) do (
type "%%F" | repl "(/\*\*[\w\W]*?)(\*\*/[\w\W]*)" "$1\n%copyright%\n$2" mx >"%%F.new"
move /y "%%F.new" "%%F" >nul
)
没有工具的批处理:
@ECHO OFF &SETLOCAL
set "comend=**/"
set "copyright=**Copyright xyz**"
:tfl
set "tfile=%temp%\%random%"
if exist "%tfile%" goto:tfl
for %%a in (*.c *.h) do (
set "first=true"
(for /f "delims=" %%b in ('findstr /n "^" "%%~a"') do (
set "line=%%b"
setlocal enabledelayedexpansion
set "line=!line:*:=!"
if "!line!"=="%comend%" if defined first (
endlocal
echo(
echo(%copyright%
set "first="
setlocal enabledelayedexpansion
set "line=!line:*:=!"
)
echo(!line!
endlocal
))>"%tfile%"
move "%tfile%" "%%~a">nul
echo(%%~a
)