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?

7h3w1z4rd
sumber

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%"
LPChip
sumber
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%
Fran Moreno
sumber