我想在Windows批處理編程中做一些子字符串,但它看起來不像Linux腳本編寫那麼容易。在Windows批處理編程中使用變量
這是我的代碼片段。
set ENV_STRING=-Dhello.env=hello -Dhello.alt.dir=C:\Works\download -Dhello.type=DDDDD
set START_INDEX=34
set END_INDEX=51
SET newStr=%ENV_STRING:~%START_INDEX%,%END_INDEX%%
START_INDEX和END_INDEX將根據將由用戶提供的ENV_STRING而改變。我正在使用START_INDEX和END_INDEX的靜態整數來表示使用這些變量。我只想從ENV_STRING中提取hello.alt.dir的值。
當我打印出newStr時,它不會對字符串進行子串處理。
有人能指出哪一部分是錯的嗎?
謝謝。
問題不明,請顯示期望的結果。 – jfatal
我想從ENV_STRING中只提取'C:\ Works \ download',它是'-Dhello.alt.dir'的值。 – user826323
使用'SET newStr =!ENV_STRING:〜%START_INDEX%,%END_INDEX%!'帶延時擴展或'CALL SET newStr = %% ENV_STRING:〜%START_INDEX%,%END_INDEX %%%'。我建議你閱讀[這個答案](http://stackoverflow.com/questions/10166386/arrays-linked-lists-and-other-data-structures-in-cmd-exe-batch-script/10167990#10167990)這解釋了這種管理,但主題不同。 – Aacini