括号中的Windows命令行查找和替换(repl.bat)

时间:2017-09-06 16:45:06

标签: windows batch-file replace cmd

我有一个变量DATE,其中包含类似06092017的内容 我有一个包含以下行的文件:

#define BUILDDATE (05092017)

括号之间的值改变

我试图用它来查找和替换文字:

type "file.h"|repl "(#define BUILDDATE \().*?(\))" "$1%DATE%$2" >"file_new.h"

file_new.h中没有任何变化。 我做错了什么?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

为什么要使用外部脚本?

@echo off

REM Prepare example to make batch file self-contained (this will overwrite file.h!)
echo.#define whatever              > file.h
echo.#define BUILDDATE (05092017) >> file.h
echo.#define something (1234)     >> file.h

for /F "usebackq tokens=1,2,*" %%A in (`type "file.h"`) do @if "%%~A"=="#define" if "%%~B"=="BUILDDATE" (
    for /F "tokens=1 delims=() " %%X in ("%%~C") do (
        echo.%%X > "file_new.h"
    )
)

echo Result:
type "file_new.h"

答案 1 :(得分:0)

谢谢你们。刚注意到在我的file.h中,BUILDDATE和括号之间有一个选项卡,而不是导致它失败的空格。