Regex 使用C#程序FNR查找和替换属性时,无法找到文件
我有一个主虚拟机,上面有几个网站。当我部署它的一个副本时,设置是一个标准值,我经常需要更改它们以适应不同的数据库。为此,我想使用一个小型c#程序,这样我就可以使用正则表达式来查找和替换所需的任何属性。为此,我使用fnr(http://findandreplace.codeplex.com/). findandreplace.bat:Regex 使用C#程序FNR查找和替换属性时,无法找到文件,regex,cmd,expression,Regex,Cmd,Expression,我有一个主虚拟机,上面有几个网站。当我部署它的一个副本时,设置是一个标准值,我经常需要更改它们以适应不同的数据库。为此,我想使用一个小型c#程序,这样我就可以使用正则表达式来查找和替换所需的任何属性。为此,我使用fnr(http://findandreplace.codeplex.com/). findandreplace.bat: set DATABASE="dbname" set DBHOST="my.host.name" set DBPORT="1234" set ENV="this.e
set DATABASE="dbname"
set DBHOST="my.host.name"
set DBPORT="1234"
set ENV="this.env"
ECHO CHANGE DATABASE
"fnr" --cl --dir "D:\Inetpub\wwwroot" --fileMask "web.config" --includeSubDirectories --useRegEx --find "<add key=\"DATABASE\" value=\".*\"\s*>" --replace "<add key=\"DATABASE\" value=\"%DATABASE%\">"
ECHO CHANGE HOST
"fnr" --cl --dir "D:\Inetpub\wwwroot" --fileMask "web.config" --includeSubDirectories --useRegEx --find "<add key=\"HOST\" value=\".*\"\s*>" --replace "<add key=\"HOST\" value=\"%DBHOST%\">"
ECHO CHANGE PORT
"fnr" --cl --dir "D:\Inetpub\wwwroot" --fileMask "web.config" --includeSubDirectories --useRegEx --find "<add key=\"ConnectionString\" value=\"Data Source.*>" --replace "<add key=\"ConnectionString\" value=\"Data Source=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = %%3%%)(port = %DBPORT%)) )(CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = %%2%%)));User ID=%%0%%;Password=%%1%%;Enlist=false\">"
set /p await= "any key to continue"
我可以看到前两个经过,如果我检查它应该接触的文件,值会正确更改。我无法理解为什么更改端口不工作,并告诉我它找不到指定的文件。第一,它不指定任何单个文件,第二,它查找与前两个相同的文件
此外,如果我尝试在FNR中运行正则表达式(find部分,参数仅与web.config文件相同,并且位于同一文件夹+子文件夹中),它会完美地找到这些文件
有人知道我做错了什么吗?
提前谢谢。显然“应该结束这个表达。我错了。问题解决了。
CHANGE PORT
The system cannot find the file specified.
"any key to continue"