双引号之间的通配符 - 批处理脚本

时间:2015-09-16 14:30:27

标签: batch-file search replace

我现在正在研究这个问题几个小时甚至在搜索互联网之后我都无法理解。 我用以下代码编写了一个Batch文件:

@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 -

2 个答案:

答案 0 :(得分:1)

set "search=return ^".*^" "
echo %search%

将返回

return ".*"

更新:子字符串也不适用于通配符。 http://ss64.com/nt/syntax-replace.html

答案 1 :(得分:0)

这就是你所描述和今天所说的内容:
input.txt和output.txt是正在使用的文件。

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "day=%dt:~6,2%.%dt:~4,2%.%dt:~0,4%"
call jrepl "return \q.*\q" "return \q%day%\q" /x /f "input.txt" /o "output.txt"

这使用名为Jrepl.bat(dbenham)的本机Windows批处理脚本 jrepl.bat可以从以下网址下载:https://www.dropbox.com/s/4otci4d4s8x5ni4/Jrepl.bat
它也可以在这里找到:http://www.dostips.com/forum/viewtopic.php?f=3&t=6044

将其放在与批处理文件相同的文件夹中,或放在系统路径上的文件夹中。