0

我需要在文件夹内的每个 c 和 .h 文件中插入一行(版权行)。版权行需要在评论部分内这些文件的开头添加。

这些文件在开头已经有注释,例如

/**
Comments1
Comments2
**/

我需要在此评论部分的末尾添加我的版权行,如下所示:

/**
Comments1
Comments2

**Copyright xyz**
**/

如何使用批处理脚本或 python 脚本来做到这一点?

4

2 回答 2

0

使用名为 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
)
于 2013-09-16T14:22:10.723 回答
0

没有工具的批处理:

@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
)
于 2013-09-16T14:58:35.967 回答