Załóżmy, że mam wartość, taką jak „Abc_123”, która jest przechowywana w zmiennej w pliku wsadowym (cmd). Chcę skończyć ze zmienną, która zawiera tylko „123”. Czy jest jakiś wbudowany sposób to zrobić?
Nie jestem wybredna co do metody lub wydajności, o ile jest ona wbudowana w typowy system Windows (Vista / 2008).
windows
batch-file
string-manipulation
Rozpoznać
źródło
źródło
help set
jak wspomniano w Jaki jest najlepszy sposób na wykonanie podłańcucha w pliku wsadowym? na StackOverflow.%string:~%start%,%len%%
CALL
, jakCALL SET _substring=%%_donor:~%_startchar%,%_length%%%
Jeśli chcesz wszystko po znaku podkreślenia (i niekoniecznie znasz długość łańcucha lub gdzie jest znak podkreślenia, ale możesz polegać na tym, że istnieje tylko jeden znak podkreślenia), spróbuj:
Zasadniczo łańcuch zostanie podzielony na tokeny, używając podkreślnika jako separatora (delims = _). Tylko drugi (tokeny = 2) zostanie przekazany (jako zmienna %% a) do pętli for. Pętla uruchomi się tylko raz, ponieważ w tym przypadku masz do czynienia z jednym ciągiem.
Jeśli chcesz zapisać rzeczy zarówno przed, jak i po podkreśleniu, spróbuj:
Zauważ, że %% a jest zmienną dla pierwszego tokena podziału; %% b jest zmienną dla drugiego tokena podziału.
źródło
Jeśli okaże się, że język wsadowy nie jest wystarczająco mocny, aby zrobić to, co chcesz - i prawdopodobnie nie zajmie ci to zbyt długo, aby przejść do tego punktu - możesz użyć programu Windows PowerShell . Nie jest to domyślnie instalowane we wszystkich wersjach systemu Windows, ale można je pobrać bezpłatnie.
Jeśli nie lubisz języka PowerShell, jest Perl. Musisz jednak zainstalować to na wszystkich systemach. Są też inni.
źródło
źródło
*
chciwy? Użyłem dobregoIF NOT ... GOTO :replace
, ale byłoby miło, gdyby istniał lepszy sposób._
ich jest, przejdź do ostatniego, a następnieset var