我需要在文件夹内的每个c和.h文件中插入一行(版权行)。版权行需要在评论部分的这些文件的开头添加。
这些文件在开头就有评论,如
/**
Comments1
Comments2
**/
我需要在此评论部分的末尾添加我的版权专线,如下所示:
/**
Comments1
Comments2
**Copyright xyz**
**/
如何使用批处理脚本或python脚本执行此操作?
答案 0 :(得分:0)
简单地使用hybrid JScript/batch utility called REPL.BAT执行正则表达式搜索并替换stdin并将结果写入stdout。该实用程序是从XP开始在任何Windows机器上运行的纯脚本 - 不需要第三方可执行文件。完整文档嵌入在实用程序脚本中。
假设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
)
答案 1 :(得分: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
)