Loop terputus

1

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 :) ..

Xaxis
sumber
Apa yang akan mengganggu loop, bagaimana ia tahu kapan harus berhenti bergaung? Saya berasumsi Anda ingin sebuah loop yang akan terus berjalan kecuali ada kondisi yang dibuat, benar? Tolong jelaskan agar saya dapat memvisualisasikan dengan lebih baik.
Pimp Juice IT

Jawaban:

2

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.

ICan'tDecideOnAName
sumber
Apakah Anda yakin ini akan berhasil? Anda harus memiliki tanda kurung dalam ekspresi, mis SET /a _rand=(%RANDOM%*10/32768)+1. Lihat ss64.com/nt/syntax-random.html
DavidPostill
Luar biasa, persis apa yang saya inginkan tetapi tujuan apa server 32768 +1 dan untuk apa?
Xaxis
Ya, program ini sebenarnya tidak berfungsi dengan benar, sebagian besar karena id ingin mengulang kembali ke angka dan terus-menerus mem-flash setiap mengatakan satu detik atau lebih.
Xaxis
@Xaxis Maaf atas respons yang terlambat, tetapi jika Anda ingin program kembali ke loop pertama Anda bisa mengimplementasikan sesuatu yang mirip dengan kode yang keluar dari loop pertama ke dalam loop kedua. Ini sebagian besar hanya copy paste dan menukar beberapa bendera lompat di sekitar.
ICan'tDecideOnAName