Jeg har en environment variable i Windows 2000 (CMD prompt/batch script) der indeholder "*". Jeg vil gerne substituere * for et andet tegn fx. _
a lá: set test=ab*cd set resultat=%test:*=_%
Kan man det?
* som 1. tegn betyder at den skal matche alt op til det flg. tegn... fx. set resultat=%test:*c=_% giver resultat=_d, men jeg vil gerne have resultat=ab_cd
Hej bertelbrander. Interessant løsning, men den duer jo kun for 1 *. Jeg forsøgte, baseret på dit løsningsforslag, at lave en løkke der måske kunne gøre det, men det fungerer heller ikke hvis der er flere *'er efter hinanden (så ryger de i eet hug.
Fx: set z=*ab*cd*ef*gh**** if %z:~0,1%. == *. set z=_%z:~1% if %z:~-1%. == *. set z=%z:~0,-1%_ :loop for /f "tokens=1,* delims=*" %%i in ("%z%") do ( if %%j. == . goto done set z=%%i_%%j ) goto loop :done echo %z%
Løsningen er blevet et loop der ikke er langt mindre effektiv, men som virker: REM **** Eliminate '*' set T=*ab*cd*ef*gh**** set POS=0 set OutPut= :loop set C=%T:~0,1% if /i %C%.==*. ( set OutPut=%OutPut%_ ) ELSE ( set OutPut=%OutPut%%C% ) set T=%T:~1% if %T%.==. goto done set /a POS=POS+1 goto loop :done
echo %OutPut%
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.