.bat修改文件内容时,文件内容中有!号,修改完就没有了。求解决

a770817895 2012-03-14 10:55:28
Rem '/*=========修改cas.properties信息=============*/
@echo off
echo %input:"=%
pause
cd "%input:"=%"
(for /f "delims=" %%a in (web.xml) do (
set "str=%%a"
setlocal enabledelayedexpansion
set "str=!str:192.168.1.108=%IP_addr: =%!"
echo,!str!
endlocal
))>"%input:"=%\web.xml.tmp"
move /y "%input:"=%\web.xml.tmp" "%input:"=%\web.xml"



web.xml里有!号存在,类似这样:
<filter-name>EncodingFilter</filter-name>
<filter-class>com.ybhy.common.web.SuperFilter</filter-class>
<init-param>
<param-name>url-pattern</param-name>
<param-value>((?!/ums_client_interface).)*</param-value>
</init-param>

.bat修改完后,!就没有,请问有什么方法可以不让他把!取掉。我想判断192.168.1.108这句话,在当前行是否存在,如果存在就修改,不存在就接着往下执行
...全文
502 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
s11ss 2012-03-15
  • 打赏
  • 举报
回复
你是说inno setup会设置input变量的值吗?
a770817895 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 s11ss 的回复:]

怎么调的批处理,详细说来!
引用 6 楼 a770817895 的回复:
引用 5 楼 s11ss 的回复:

你的代码没给全吧?不然%input%变量哪儿来的?

在你给出的代码之前肯定有setlocal enabledelayedexpansion


我是用inno setup制作的安装程序,调用的这个批处理文件,%input%是用户选择的路劲,
[/Quote]


[Run]
Filename: "{app}\batTest2.bat"; WorkingDir: "{app}\"; StatusMsg: "正在安装AAA......";Parameters: """{app}""";
这是inno setup打包软件,在这调的。"""{app}"""就是那个%input%
s11ss 2012-03-15
  • 打赏
  • 举报
回复
怎么调的批处理,详细说来!
[Quote=引用 6 楼 a770817895 的回复:]
引用 5 楼 s11ss 的回复:

你的代码没给全吧?不然%input%变量哪儿来的?

在你给出的代码之前肯定有setlocal enabledelayedexpansion


我是用inno setup制作的安装程序,调用的这个批处理文件,%input%是用户选择的路劲,
[/Quote]
a770817895 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 s11ss 的回复:]

你的代码没给全吧?不然%input%变量哪儿来的?

在你给出的代码之前肯定有setlocal enabledelayedexpansion
[/Quote]

我是用inno setup制作的安装程序,调用的这个批处理文件,%input%是用户选择的路劲,
a770817895 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 s11ss 的回复:]

那IP_addr变量呢?
[/Quote]

这是系统IP啊。嗯,我试试。
s11ss 2012-03-15
  • 打赏
  • 举报
回复
你在@echo off下加一句:
if "%~1"=="" cmd /v:off /c "%~f0" aaaaaaaaaa & goto :eof
s11ss 2012-03-15
  • 打赏
  • 举报
回复
那IP_addr变量呢?
a770817895 2012-03-15
  • 打赏
  • 举报
回复
会啊,那是安装路径。。。。
s11ss 2012-03-14
  • 打赏
  • 举报
回复
你的代码没给全吧?不然%input%变量哪儿来的?

在你给出的代码之前肯定有setlocal enabledelayedexpansion
a770817895 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 s11ss 的回复:]

我知道了,你有另一个2.bat调用了这个1.bat,而2.bat在调用1.bat之前,有setlocal enabledelayedexpansion,所以导致感叹号丢失!

解决办法就是,2.bat在调用1.bat之前,再加上endlocal就行了!即:
2.bat:

BatchFile code
setlocal enabledelayedexpansion
...
endlo……
[/Quote]


没有的哥们,就一个bat文件.我很无奈啊
s11ss 2012-03-14
  • 打赏
  • 举报
回复
我知道了,你有另一个2.bat调用了这个1.bat,而2.bat在调用1.bat之前,有setlocal enabledelayedexpansion,所以导致感叹号丢失!

解决办法就是,2.bat在调用1.bat之前,再加上endlocal就行了!即:
2.bat:

[code=BatchFile]setlocal enabledelayedexpansion
...
endlocal
...
1.bat[/code]
a770817895 2012-03-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 s11ss 的回复:]

<param-value>((?!/ums_client_interface).)*</param-value>
你说的是这个红色的感叹号吗?我测试过,貌似不会丢啊!
[/Quote]
真的丢了,xml和txt格式的都会丢啊.
s11ss 2012-03-14
  • 打赏
  • 举报
回复
<param-value>((?!/ums_client_interface).)*</param-value>
你说的是这个红色的感叹号吗?我测试过,貌似不会丢啊!

1,508

社区成员

发帖
与我相关
我的任务
社区描述
Windows专区 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧