Saya memiliki file batch yang secara otomatis menyalin banyak file dari satu tempat ke tempat lain dan kembali untuk saya. Hanya masalahnya adalah sebanyak itu membantu saya, saya terus secara tidak sengaja memilih perintah itu dari buffer perintah saya dan menimpa perubahan yang tidak terikat secara massal.
Kode apa yang saya perlukan untuk file .bat saya untuk membuatnya bertuliskan "apakah kamu yakin", dan membuat saya mengetik "y" sebelum file itu menjalankan sisa file? Jika ada selain "y" yang diketik itu harus keluar dari eksekusi pada baris itu.
Sunting 27 Nov Ok saya tandai ini belum dijawab lagi karena saya masih tidak bisa memahaminya. Ketika saya memanggil "keluar;" itu menutup cmd.exe yang bukan yang saya inginkan. Semua ini karena Windows menerapkan buffer perintah yang salah [berbeda dari yang biasa saya lakukan setidaknya]
sumber
SET AREYOUSURE=N
sebelum prompt untuk menghapus pilihan jika Anda sudah menjalankan skrip sebelumnya di jendela perintah itu. Tanpanya default akan tetap menjadi pilihan yang dipilih sebelumnya.setlocal
dan ituendlocal
harus mengurusnya.%AREYOUSURE%
tidak akan ada lagi setelahendlocal
.coba perintah PILIHAN , mis
sumber
The
choice
perintah ini tidak tersedia di mana-mana. Dengan versi Windows yang lebih baru,set
perintah memiliki/p
opsi untuk mendapatkan masukan penggunalihat
set /?
untuk info lebih lanjutsumber
Ada dua perintah yang tersedia untuk petunjuk pengguna di baris perintah windows:
/P
tersedia di semua versi Windows NT dengan ekstensi perintah yang diaktifkan danset adalah perintah internal prosesor perintah Windows
cmd.exe
. Opsi/P
untuk meminta pengguna untuk string hanya tersedia dengan ekstensi perintah yang diaktifkan yang diaktifkan secara default karena jika tidak, hampir tidak ada file batch yang akan berfungsi lagi saat ini.choice.exe adalah aplikasi konsol terpisah (perintah eksternal) yang terletak di
%SystemRoot%\System32
.choice.exe
Windows Server 2003 dapat disalin ke direktori%SystemRoot%\System32
pada mesin Windows XP untuk digunakan pada Windows XP seperti banyak perintah lain yang tidak tersedia secara default pada Windows XP, tetapi tersedia secara default pada Windows Server 2003.Merupakan praktik terbaik untuk lebih memilih penggunaan PILIHAN daripada penggunaan SET / P karena alasan berikut:
/C
(dan Ctrl+C) dan mengeluarkan bunyi bip kesalahan jika pengguna menekan tombol yang salah.echo Y | call PromptExample.bat
menggunakan PILIHAN .cmd
karena kesalahan sintaks, atau dalam pelaksanaan perintah yang tidak disertakan sama sekali dalam file batch pada tidak file batch berkode bagus. Diperlukan upaya agar SET / P aman dari kesalahan input pengguna atau sengaja salah.Berikut adalah contoh cepat menggunakan PILIHAN yang disukai dan sebagai alternatif SET / P pada
choice.exe
tidak tersedia pada komputer bekas yang menjalankan Windows.Catatan: File batch ini menggunakan ekstensi perintah yang tidak tersedia di Windows 95/98 / ME menggunakan
command.com
alih-alihcmd.exe
sebagai penerjemah perintah.Baris perintah
set "UserChoice=!UserChoice: =!"
ditambahkan untuk memungkinkan untuk memanggil file batch ini denganecho Y | call PromptExample.bat
pada Windows NT4 / 2000 / XP dan tidak memerlukan penggunaanecho Y| call PromptExample.bat
. Ini menghapus semua spasi dari string yang dibaca dari STDIN sebelum menjalankan perbandingan dua string.echo Y | call PromptExample.bat
menghasilkan YSPACE ditugaskan ke variabel lingkunganUserChoice
. Itu akan mengakibatkan pemrosesan prompt dua kali karena"Y "
tidak peka huruf besar / kecil sama"N"
atau"Y"
tanpa menghapus semua spasi terlebih dahulu. JadiUserChoice
dengan YSPACE sebagai nilai akan menghasilkan menjalankan prompt untuk kedua kalinya dengan opsi yangN
didefinisikan sebagai default dalam file batch pada eksekusi prompt kedua yang selanjutnya menghasilkan keluarnya pemrosesan file batch yang tidak terduga. Ya, keamanan penggunaan SET / P memang rumit, bukan?Untuk detail lebih lanjut tentang penggunaan SET / P dan PILIHAN untuk meminta pengguna memilih dari daftar opsi, lihat jawaban di Bagaimana cara menghentikan penerjemah perintah Windows dari menghentikan eksekusi file batch pada input pengguna yang salah?
Beberapa petunjuk lagi:
UserChoice
denganN
danY
, tetapi nilaiUserChoice
yang dikelilingi oleh"
dengan"N"
dan"Y"
.EQU
danNEQ
dirancang utama untuk membandingkan dua bilangan bulat dalam jangkauan -2147483648 sampai 2147483647 dan bukan untuk membandingkan dua string.EQU
danNEQ
juga berfungsi untuk perbandingan string, tetapi hasil dari membandingkan string dalam tanda kutip ganda pada upaya yang tidak berguna untuk mengubah string kiri menjadi integer.EQU
dan hanyaNEQ
dapat digunakan dengan ekstensi perintah yang diaktifkan. Operator perbandingan untuk perbandingan string sedang==
dannot ... ==
yang bekerja bahkan dengan ekstensi perintah yang dinonaktifkan karena bahkancommand.com
MS-DOS dan Windows 95/98 / ME sudah mendukungnya. Untuk detail selengkapnya tentang operator perbandingan IF, lihat Simbol yang setara dengan NEQ, LSS, GTR, dll. Di file batch Windows .goto :EOF
membutuhkan ekstensi perintah yang diaktifkan untuk benar-benar keluar dari pemrosesan file batch. Untuk lebih jelasnya lihat Ke mana GOTO: EOF kembali?Untuk memahami perintah yang digunakan dan cara kerjanya, buka jendela prompt perintah, jalankan perintah berikut di sana, dan baca seluruhnya semua halaman bantuan yang ditampilkan untuk setiap perintah dengan sangat hati-hati.
choice /?
echo /?
endlocal /?
goto /?
if /?
set /?
setlocal /?
Lihat juga:
Ini menjelaskan alasan menggunakan sintaks
set "variable=value"
saat menetapkan string ke variabel lingkungan.if errorlevel X
perilaku dan operator&
.|
dan menangani STDIN .SystemRoot
.sumber
CHOICE.COM
secara default pada MS-DOS 6.0, MS-DOS 7.0, Windows 95 dan Windows 98. Tetapi tidak ada yangchoice.exe
diinstal secara default pada Windows NT4, Windows 2000 dan Windows XP.CHOICE.COM
dapat digunakan juga pada NT4, Windows 2000 dan Windows XP, tetapi akan lebih baik jika menggunakan 32-bitchoice.exe
dari kit sumber daya yang sesuai. Lihat halaman Rob van der Woude tentang PILIHAN . Opsinya sebagian berbeda antaraCHOICE.COM
danchoice.exe
. Namun, pertanyaannya bukan tentang DOS.Di sini sedikit lebih mudah:
atau
sumber
%errorlevel%
selalu merupakan nilai integer. Lihat di sini untuk dokumentasi termasuk contoh.Inilah metode masuk saya untuk jawaban ya / tidak .
Ini juga tidak peka huruf besar / kecil.
Ini hanya memeriksa kesalahan yang diberikan oleh input dan mengatur
choice
variabel ke apa pun yang Anda butuhkan sehingga dapat digunakan di bawah ini dalam kode.sumber
Jika Anda ingin program batch keluar kembali ke prompt dan tidak menutup prompt (AKA cmd.exe), Anda dapat menggunakan "exit / b".
Ini mungkin membantu.
Atau jika Anda tidak ingin menggunakan banyak baris ...
Semoga ini membantu...
sumber
Berikut adalah contoh sederhana yang saya gunakan dalam skrip cadangan (.bat / batch) pada Windows 10, yang memungkinkan saya memiliki opsi berbeda saat membuat cadangan.
Anda dapat memiliki blok ini sebanyak yang Anda butuhkan.
sumber
Pertama, buka terminal.
Lalu, ketik
Selanjutnya, buka .sure dan tempelkan ini di dalam.
Setelah itu, tutup file tersebut.
Ini akan memberi Anda prompt apakah Anda yakin sebelum melanjutkan perintah.
sumber
Anda dapat mempertimbangkan untuk menggunakan konfirmasi UI.
Dengan yesnopopup.bat
pengguna akan melihat yang berikut dan bergantung pada pilihan skrip akan melanjutkan:
dengan script yang benar-benar sama Anda juga dapat menggunakan iexpYNbutton.bat yang akan menghasilkan popup serupa.
Dengan buttons.bat Anda dapat mencoba skrip berikut:
dan pengguna akan melihat:
sumber
Buka terminal. Ketik berikut ini
Tempel ini di dalam sure.sh
Tutup sure.sh dan ketik ini di terminal.
Sekarang, jika Anda mengetik yakin sebelum mengetik perintah itu akan memberi Anda prompt apakah Anda yakin sebelum melanjutkan perintah.
Semoga bermanfaat!
sumber