Memanggil file batch dengan variabel string sebagai parameter hanya menampilkan kata string pertama


0

Saya mencoba untuk memanggil file batch saat mengirim variabel string, tetapi ketika saya mencoba untuk mendapatkannya hanya menampilkan kata pertama dari string.

sebelum memanggil program lain saya mengulanginya untuk memeriksa apakah sudah ditentukan dan saya melihat seluruh kalimat (file pertama):

set /p input=
echo %input%
call test.bat %input%

tetapi ketika saya mencoba untuk mendapatkannya (file kedua):

set output=%1
echo %output%

itu hanya menunjukkan kata pertama.

Apa yang harus saya lakukan untuk mendapatkan seluruh kalimat dari satu file batch ke yang lain menggunakan perintah panggilan?

Jawaban:


0

Alasannya sederhana.

Ketika Anda bekerja dengan batchfile, setiap parameter diakses melalui% 1,% 2,% 3 ... hingga 9 parameter.

Parameter dipisahkan oleh spasi, jadi jika Anda memasukkan lebih banyak kata dan memisahkannya dengan spasi, pada dasarnya, mereka menjadi beberapa parameter. Solusinya sederhana, taruh% input% dalam tanda kutip untuk membuat batchfile mengerti bahwa itu seharusnya menjadi satu parameter. Skrip Anda menjadi:

set /p input=
echo %input%
call test.bat "%input%"

Sekarang satu-satunya pertanyaan adalah bagaimana saya menghapus tanda kutip dari output ...: /
7h3w1z4rd


0

Jika input berisi spasi Anda harus memasukkannya menggunakan tanda kutip untuk membiarkan batch menangkap seluruh parameter sebagai satu, berisi spasi.

Sekarang, di batch kedua, Anda hanya perlu menambahkan ~simbol ke parameter seperti ini:

REM Note the use of ~ after the percentage symbol

set output=%~1
echo %output%
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.