Misalkan saya memiliki nilai seperti "Abc_123" yang disimpan dalam variabel dalam file batch (cmd). Saya ingin berakhir dengan variabel yang hanya berisi "123". Apakah ada cara bawaan untuk melakukan ini?
Saya tidak terlalu pilih-pilih tentang metode, atau kinerja, asalkan itu dibangun untuk sistem Windows (Vista / 2008) yang khas.
help set
sebagaimana disebutkan dalam Apa cara terbaik untuk melakukan substring dalam file batch? di StackOverflow.%string:~%start%,%len%%
CALL
, likeCALL SET _substring=%%_donor:~%_startchar%,%_length%%%
Jika Anda hanya ingin semuanya setelah garis bawah (dan tidak perlu tahu panjang string atau di mana garis bawah itu, tetapi dapat mengandalkan hanya ada satu garis bawah), coba:
Pada dasarnya, string Anda akan dibagi menjadi token menggunakan garis bawah sebagai pembatas (delims = _). Hanya yang kedua (token = 2) yang akan diteruskan (sebagai variabel %% a) ke loop for. Loop hanya akan berjalan sekali karena Anda berurusan dengan string tunggal dalam kasus ini.
Jika Anda ingin menyimpan barang sebelum dan sesudah garis bawah, coba:
Perhatikan bahwa %% a adalah variabel untuk token pertama dari pemisahan; %% b adalah variabel untuk token kedua dari pemisahan.
sumber
Jika Anda menemukan bahwa bahasa kumpulan tidak cukup kuat untuk melakukan apa yang Anda inginkan - dan sepertinya tidak akan memakan waktu terlalu lama untuk sampai ke titik itu - Anda dapat menggunakan Windows PowerShell . Ini tidak diinstal secara default di semua versi Windows, tetapi Anda dapat mengunduhnya secara gratis.
Jika Anda tidak menyukai bahasa PowerShell, ada Perl. Anda harus menginstalnya di semua sistem. Ada juga yang lain.
sumber
sumber
*
serakah? Saya menggunakan ol yang baikIF NOT ... GOTO :replace
, tetapi akan menyenangkan jika ada cara yang lebih baik._
, maka beralih ke yang terakhir, kemudianset var