Bagaimana saya membuat file batch dengan loop terputus? Saat ini saya memiliki file dengan semacam perasaan matriks-y yang melakukan ini ...
:start
echo %random%%random%%random%%random%
goto start
tapi saya ingin membuatnya jadi layar clr
Lalu menampilkan sekelompok tanda seru, seperti jenis kesalahan seperti
:start
echo !!!!!!!!!!...etc
goto start
tetapi bagaimana saya membuat loop terputus seperti itu?
..mind Anda, saya agak baru-ish terlalu batch, jadi saya akan berterima kasih atas perlakuan yang lebih khusus di area penjelasan setiap baris. Terima kasih :) ..
command-line
batch-file
cmd.exe
Xaxis
sumber
sumber
Jawaban:
Pertanyaan Anda agak tidak jelas, tapi saya berasumsi Anda ingin program menampilkan kesalahan secara acak. Untuk ini, Anda dapat menggunakan generator nomor acak.
set /a rndm=%random% * 10 / 32768 + 1
Kode ini akan membuat variabel yang disebut "rndm" (ini tidak harus disebut rndm, Anda dapat memberi nama ini apa pun yang Anda suka), yang merupakan angka acak antara 1 dan 10. Jika Anda ingin kumpulan yang lebih besar atau lebih kecil dari kemungkinan angka, Anda dapat mengubah 10 dalam kode menjadi apa pun yang Anda inginkan. Jadi, jika Anda menginginkan angka acak antara 1 dan 3, Anda akan melakukan ini:
set /a rndm=%random% * 3 /32768 + 1
Anda dapat menggunakan ini untuk menghasilkan peluang acak dari kesalahan yang terjadi. Jika Anda ingin memiliki peluang 1 dalam 10 keluar dari loop, membersihkan layar dan memasukkan loop yang berbeda, Anda ingin kode Anda terlihat seperti ini:
@echo off :start echo %random%%random%%random%%random% set /a rndm=%random% * 10 / 32768 + 1 if %rndm% == 1 goto errorstart goto start
:errorstart cls :error echo !!!!!!!!!!!! goto error
Saat loop dijalankan, program menghasilkan angka acak antara 1 dan 10. Tepat setelah itu memeriksa apakah nomor yang dihasilkan adalah 1. Jika bukan 1, ia melanjutkan loop. Jika ya, itu akan melompat ke label "errorstart". Perintah di bawah label mulai kesalahan membersihkan layar. Program kemudian memasuki loop kesalahan, di mana ia mengulangi tanda seru hingga program ditutup.
Kode ini seharusnya memberi Anda efek yang Anda cari, tetapi peluang 1 banding 10 agak terlalu tinggi untuk program yang bekerja secepat ini, jadi Anda mungkin ingin mengubahnya menjadi 1 dalam 1000 atau 1 dalam 10.000. Itu akan membuat loop awal bertahan lebih lama sebelum loop sekunder mulai.
sumber
SET /a _rand=(%RANDOM%*10/32768)+1
. Lihat ss64.com/nt/syntax-random.html