【发布时间】:2015-12-13 05:05:55
【问题描述】:
我现在正在研究这个几个小时,即使在搜索互联网后我也无法弄清楚。 我用以下代码编写了一个批处理文件:
@echo off
setlocal enableextensions disabledelayedexpansion
set "search=return ".*" "
set "replace=return "%DATE%""
set "textFile=C:\PathToFile"
for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
set "line=%%i"
setlocal enabledelayedexpansion
set "line=!line:%search%=%replace%!"
>>"%textFile%" echo(!line!
endlocal
)
我的问题是,在“搜索”部分,我需要在双引号之间使用一种通配符。我试过正则表达式,我试过 *, ?并转义引号,但没有任何效果!上面的代码也不起作用。我敢打赌这是一个非常简单的错误,但我无法弄清楚。
我正在文件中寻找类似的内容:return "6.20.99.99"
结果应该是:return "16.09.2015"
编辑 如果有人遇到同样的问题 - 我在评论中发布了解决方案,但又是这样:
jrepl "return \q.*\q" "return \q%date%\q" /X /F "C:\PathToFile" /o -
【问题讨论】:
-
你所说的
for集合中的break是什么(in之后的部分)?没有这样的命令,你用的是第三方工具吗? -
如果你想在一个变量中进行搜索和替换,只需关注它并删除这里无用的代码。让代码简单。
-
@aschipfl
break是一个内部命令,只会以被滥用的方式创建一个零字节文件。 -
我不知道,@foxidrive;从哪个 Windows 版本开始可用?
-
@aschipfl 它可以追溯到 MSDOS 并且很少使用。制作零字节文件对它来说是一项新工作。 :)
标签: batch-file search replace