2013-05-22 38 views
0

的一部分,我有兩個要求,以實現這些如下。分批需要獲取文件名的第一個元素,並檢查屬性名稱所有腦幹

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文件(名稱=值對) 我可以讀取該屬性文件中的每一行。 實際上有一種情況喜歡使用正則表達式來檢查屬性名稱存在的一部分。 如果該屬性存在,我們需要修改該特定屬性的值而不重寫該文件。 清楚, 有在屬性文件屬性httpconnector_port_httpConnector_java=9090。 我想檢查httpconnector_port_ *的存在。

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

如果存在我想改變(在這種情況下,9090),該屬性的值。

我怎樣才能做到這一點?

請你幫助我嗎?

+0

編輯您的文章,以顯示與實際文件的2行。 1與Java和其中一個沒有。 –

+0

'不重寫文件'?如果不重寫它,則無法更改文件。 – foxidrive

回答

0

問題1這應該工作。

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

感謝foxidrive,它的工作完美...再次感謝 – Thiru

0

建議與(Q2):

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

download sed for Windows

+0

我們不能僅通過批處理腳本編輯值而不重寫文件嗎?如果沒有,那麼我們可以通過重寫文件來實現嗎? – Thiru

+0

是的,你可以看看[Aacini](http://stackoverflow.com/a/16469670/2098699) – Endoro