2

我有一个包含以下内容的 xml 文件:

<setParameter value="\\deveserver\d$\Websites\anime" name="IIS Web Application Name"/>

我想编写一个批处理脚本来搜索这个\\deveserver\d$\Websites\anime字符串(它保存在一个名为 的变量中CurrentFolder)并将其替换为输入的任何输入。

我将输入的路径保存在变量中,DestinationFolder

SET DestinationFldr=
SET /p DestinationFldr=Enter Destination path:

我检查的任何替换和文本帖子似乎都不起作用。我认为它无法识别双反斜杠。请帮忙。谢谢。

4

2 回答 2

1
@ECHO off
SETLOCAL
SET "currentfolder=\\deveserver\d$\Websites\anime"
SET "DestinationFldr=some\variety\of\input"
(
FOR /f "delims=" %%i IN ('type aninput.xml^|findstr /n /r "$" ') DO (
 SET line=%%i
  SETLOCAL ENABLEDELAYEDEXPANSION
  SET line=!line:*:=!
  IF DEFINED line (ECHO(!line:%currentfolder%=%destinationfldr%!) ELSE (ECHO()
  endlocal
)
)>anoutput.xml

FC aninput.xml anoutput.xml

currentfolder按指定设置并设置为destfldr一些字符串以模拟输入,

  • 将每一行读入%%i并用前导编号number :- 包括空行
  • 将值分配给line
  • 启动一个 setlocal 延迟扩展帧
  • 删除line最多并包括第一个冒号的部分(即插入的行号findstr
  • 如果line仍被定义,echo则将其替换为字符串;否则echo为空行
  • 关闭 setlocal 框架

FC inputfile outputfile 显示更改

于 2013-04-15T16:15:34.573 回答
0

如果你有<setParameter value="\\deveserver\d$\Websites\anime" name="IIS Web Application Name"/>file.xml可以使用这个代码:

@echo off&setlocal
set "CurrentFolder=\\deveserver\d$\Websites\anime"

for /f "delims=" %%i in (file.xml) do set "html=%%i"
SET DestinationFldr=
SET /p "DestinationFldr=Enter Destination path: "
setlocal enabledelayedexpansion
set "html=!html:%CurrentFolder%=%DestinationFldr%!"
echo html: !html!

测试和输出:

Enter Destination path: \\myserver\&&\othersites\adele
html: <setParameter value="\\myserver\&&\othersites\adele" name="IIS Web Application Name"/>
于 2013-04-15T16:03:10.937 回答