batch-需要获取文件名的第一个元素并检查属性名称的部分存在

时间:2013-05-22 10:07:48

标签: batch-file

我有两个要求来达到以下目的。

1)我在一个文件夹中有几个.xml文件。 文件名类似于abc.bcd.efgh.dep-bui.xml,cdefgh.abc.efgh.dep-bui.xml,wxyzs.cdrf.cba.dep-bui.xml  我使用以下代码

从文件夹路径获得了abc.bcd.efgh.dep-bui.xml , cdefgh.abc.efgh.dep-bui.xml , wxyzs.cdrf.cba.dep-bui.xml这样的文件名
for /R %%K in (*.dep-bui.xml) do (
echo Enter the port number for the service %%~nK

我希望从文件名的开头到第一次出现。 (文件名的第一个元素) 显然它应该像上面的文件名中的abc,cdefgh,wxyzs。 请考虑文件名的第一个元素是不是固定长度。 你能帮我解决一下如何实现吗?

2) 有一个.properties文件(名称=值对) 我可以从该属性文件中读取每一行。 实际上有一种情况,比如使用正则表达式检查属性名称的一部分是否存在。 如果属性存在,我们需要修改该特定属性的值而不重写文件。 显然, .properties文件中有一个属性httpconnector_port_httpConnector_java=9090。 我想检查httpconnector_port _ *。

的存在
(Because httpconnector_port_ is constant and httpConnector_java varies from one project to other project.)

如果它存在,我想要更改该属性的值。(在这种情况下为9090)

我怎样才能实现这一目标?

你能帮帮我吗?

2 个答案:

答案 0 :(得分:0)

对于问题1,这应该有用。

@echo off
for /R %%a in (*.dep-bui.xml) do (
for /f "delims=." %%b in ("%%~nxa") do echo "%%b"
)

答案 1 :(得分:0)

建议(Q2):

sed -i.bak "s/^\(httpconnector_port_httpConnector_java\)\W.*/\1=9090/" "%propertiesFile%"

download sed for Windows