ant的一个小技术问题(带双引号导致失败,求大虾指点)
1.自己根据端口,查找PID进行,然后关闭程序。脚本内容如下stop.bat
netstat -aon| findstr 8088 > output.txt
for /f "tokens=5 delims= " %%a in (output.txt) do (
echo %%a
taskkill /pid %%a /t /f
)
del /f /q output.txt
执行脚本为
<target name="init" >
<exec executable= "cmd">
<arg value="/c stop.bat"/>
</exec>
</target>
则会成功,但是现在想直接拆分成命令,拆分语句如下
2.拆分成单条执行语句执行
<target name="init" >
<exec executable= "cmd">
<arg line= "/c"/>
<arg line="for /f “tokens=5 delims= ”, %%a in (output.txt) do(taskkill /PID %%a /F)" />
<arg line="netstat -aon| findstr 8088 > output.txt" />
</exec>
</target>
失败问题原因:
由于 <arg line="for /f “tokens=5 delims= ”, %%a in (output.txt) do(taskkill /PID %%a /F)" />里面有双引号,导致执行失败。
求解决办法。
------解决方案--------------------你这个双引号一看就知道是有输入法时的大双引号,这个双引号系统会把它当做一个字符来解析,不会当做双引号来用。
改成如下
<arg line="for /f \"tokens=5 delims= \", %%a in (output.txt) do(taskkill /PID %%a /F)" />
或者
<arg line="for /f 'tokens=5 delims= ', %%a in (output.txt) do(taskkill /PID %%a /F)" />
------解决方案--------------------
用bat脚本处理