2012-11-27 49 views
0

我想替換路徑字符串中第一次出現的特定字符串並非全部出現。批處理腳本查找並替換路徑字符串中第一個出現的字符串

爲如:

set strpath=D:\Temp\Test\projects\Test 
set strreplace=Test 
set strpath=%strpath:%strreplace%=MyProjects%   
echo strpath = %strpath% 

但它取代像 strPath的所有發生= d:\ TEMP \ MyProjects下\項目\ MyProjects下

我需要輸出像

D:\Temp\MyProjects\projects\Test 

在感謝提前。

回答

0

我做了一個功能,你的問題:

@Echo OFF 
SETLOCAL Enabledelayedexpansion 

:: By Elektro [email protected] 

set "strpath=D:\Temp\Test\projects\Test" 

REM Call :REPLACE_FIRST "Variable" "word" "to replace word" 
Call :REPLACE_FIRST "%strpath%" "Test" "Anything" 
Echo %replaced_str% 
Pause&Exit 


:REPLACE_FIRST 
Set "str=%~1" 
Set "word_before=%~2" 
Set "word_after=%~3" 
Set "splited_str=%str:\= \ %" 

FOR %%# in (%splited_str%) do (
    IF "%%#" EQU "!word_before!" (
     Set "replaced_str=!replaced_str!!word_after!" 
     Set "word_before=" 
    ) ELSE (
     Set "replaced_str=!replaced_str!%%#" 
    ) 
) 

GOTO:EOF 

輸出:

D:\Temp\Anything\projects\Test 
相關問題