windows - Uddrag substring inden for streng

Indlæg af Hanne Mølgaard Plasc

Problem



I betragtning af følgende streng:


[0.020s][info][class,load] opened: C:Program FilesJavajdk-9.0.1libmodules


Hvordan kan jeg skrive en Windows-batchfil, .bat eller kommandoscript, .cmd, for kun at udvide C:Program FilesJavajdk-9.0.1 delen af ​​strengen? (Brug af sin position er ikke tilfredsstillende) .

Bedste reference


Prøv dette hvis strengen er i en fil kaldet input.txt:


for /f "tokens=2* delims=:" \%\%a in (input.txt) do set "$path=\%\%a:\%\%b"
echo \%$path:~1\%

Andre referencer 1


Hvis strengen er indeholdt i en variabel, kan du bruge strengsubstitution:


set string="[0.020s][info][class,load] opened: C:Program FilesJavajdk-9.0.1libmodules"
set "jdkmod="\%string:*: =\%"
set jdkmod


Prøveudgang:


jdkmod="C:Program FilesJavajdk-9.0.1libmodules"

Andre referencer 2


Det er ikke klart fra dit spørgsmål, hvor strengen kommer fra, eller hvis den allerede er blevet filtreret for den specifikke output, du bruger til den pågældende streng.


Nedenfor antages det, at du ledte efter stien op til stamkatalogen for lib:


@Echo Off
Set "String=[0.020s][info][class,load] opened: C:Program FilesJavajdk-9.0.1libmodules"
For /F "Tokens=2*" \%\%A In ('"Echo \%String:lib=&:\%"') Do Set "var=\%\%~B"
Echo [\%var\%]
Pause


Prøveudgang:


[C:Program FilesJavajdk-9.0.1]