【发布时间】:2015-07-31 21:54:27
【问题描述】:
我有一个用于我的参数文件的 XML 文件(例如,说明操作事物的路径,具体取决于运行批处理文件的服务器,因此我可以在任何地方使用相同的批处理文件)
例如,我的 XML 文件名“Global.DeployParameters.xml”如下所示:
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<deploy>
<SoftwareToInstallPaths>
<softwarepath>
C:\Software
</softwarepath>
在我的批处理文件中,我找到它并将变量 %softwarepath% 设置为读取“C:\Software”
for /f "tokens=1,2 delims=:" %%n in ('findstr /n /i /c:"<softwarepath>" "Global.DeployParameters.xml"') do (
for /f "tokens=*" %%l in ('type "Global.DeployParameters.xml" ^| more +%%n') do set "softwarepath=%%l" & goto endLoop
)
:endLoop
如果我这样做的话,在同一个批处理文件中:
COPY "C:\test\*.*" "%softwarepath%"
如果可以正常工作并将其中的文件复制到批处理文件所在的位置,但是如果我将 XML 文件更改为读取
<softwarepath>
%~dp0..
</softwarepath>
也就是说,将“C:\test\”的内容复制到“批处理文件当前路径”所在的文件夹级别,而不是创建一个与批处理文件同名的文件“%~dp0”位于但如果我在批处理文件“%~dp0..”中硬拷贝它会起作用。
我无法对其进行硬编码,因为它在每台服务器上的位置不同,因此需要从特定服务器的 XML 文件中读取。我怎样才能让它读取 XML 文本作为命令而不是文字文本?
【问题讨论】:
-
不明白..
%~dp0始终可以从脚本中访问,您不需要从 xml 中读取。 -
我知道确实如此,在某些服务器上,我需要将文件复制到的驱动器不在批处理文件所在的位置。但是在某些服务器上它需要是这样的,并且有多个服务器可以这样做
标签: xml batch-file