Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用C#程序FNR查找和替换属性时,无法找到文件_Regex_Cmd_Expression - Fatal编程技术网

Regex 使用C#程序FNR查找和替换属性时,无法找到文件

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

我有一个主虚拟机,上面有几个网站。当我部署它的一个副本时,设置是一个标准值,我经常需要更改它们以适应不同的数据库。为此,我想使用一个小型c#程序,这样我就可以使用正则表达式来查找和替换所需的任何属性。为此,我使用fnr(http://findandreplace.codeplex.com/).

findandreplace.bat:

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"