Kita dapat mengganti string dalam file batch menggunakan perintah berikut
set str="jump over the chair"
set str=%str:chair=table%
Garis-garis ini bekerja dengan baik dan mengubah string "melompati kursi" menjadi "melompati meja". Sekarang saya ingin mengganti kata "kursi" dalam string dengan beberapa variabel dan saya tidak tahu bagaimana melakukannya.
set word=table
set str="jump over the chair"
??
Ada ide?
command-line
batch-file
Faisal
sumber
sumber
Jawaban:
Anda dapat menggunakan!, Tetapi Anda harus menyetel sakelar ENABLEDELAYEDEXPANSION.
sumber
str
itu sendiri berasal dari ekspansi yang tertunda?set str=!str:chair=!word!!
tidak bekerja dengan benar."jump over the !word!"
.Anda bisa menggunakan sedikit trik berikut:
Itu
call
menyebabkan lapisan lain dari ekspansi variabel, sehingga perlu untuk mengutip%
tanda asli tetapi semuanya berhasil pada akhirnya.sumber
%"jump over the "word%%%
. Perlu diketahui, bahwa kode dalam file batch dan baris perintah dapat menghasilkan hasil yang berbeda.set word=table
set str="jump over the chair"
call set str=%%str:chair=%word%%%
echo %str%
set word1=chair
set word2=desk
set str="jump over the chair"
call set str=%%str:%word1%=%word2%%%
echo %str%'
Saya bisa menggunakan Joey's Answer untuk membuat fungsi:
Gunakan sebagai:
Dan Fungsi ini ke bagian bawah File Batch Anda.
Dan ingat Anda HARUS menambahkan "SETLOCAL ENABLEDELAYEDEXPANSION" ke bagian atas file batch Anda atau semua ini tidak akan bekerja dengan benar.
sumber
Ini bekerja dengan baik
sumber
chair
dan menambahkan katatable
, tetapi tidak menukar dua kata. Cobalah untuk mengganti kataover
denganunder
dan Anda mendapatkanjump the chairunder