Saya memiliki file batch dan saya ingin menyertakan file eksternal yang berisi beberapa variabel (misalnya variabel konfigurasi). Apa itu mungkin?
batch-file
Pablo
sumber
sumber
Jawaban:
Catatan: Saya mengasumsikan file batch Windows karena kebanyakan orang tampaknya tidak menyadari bahwa ada perbedaan yang signifikan dan secara membabi buta memanggil semuanya dengan teks abu-abu pada DOS latar belakang hitam. Namun demikian, varian pertama harus bekerja di DOS juga.
Konfigurasi yang dapat dijalankan
Cara termudah untuk melakukannya adalah dengan meletakkan variabel di file batch itu sendiri, masing-masing dengan
set
pernyataannya sendiri :dan dalam kelompok utama Anda:
Tentu saja, itu juga memungkinkan variabel dibuat secara bersyarat atau bergantung pada aspek sistem, jadi ini cukup serbaguna. Namun, kode arbitrer dapat berjalan di sana dan jika ada kesalahan sintaksis, kumpulan utama Anda juga akan keluar. Di dunia UNIX ini tampaknya cukup umum, terutama untuk cangkang. Dan jika Anda memikirkannya,
autoexec.bat
tidak ada yang lain.Pasangan kunci / nilai
Cara lain adalah dengan
var=value
berpasangan di file konfigurasi:Anda kemudian dapat menggunakan cuplikan berikut untuk memuatnya:
Ini menggunakan trik yang sama seperti sebelumnya, yaitu hanya menggunakan
set
pada setiap baris. Tanda kutip yang ada untuk menghindari hal-hal seperti<
,>
,&
,|
. Namun, mereka sendiri akan rusak saat tanda kutip digunakan dalam input. Anda juga harus selalu berhati-hati saat memproses data lebih lanjut dalam variabel yang disimpan dengan karakter seperti itu.Secara umum, secara otomatis keluar dari input yang sewenang-wenang agar tidak menimbulkan sakit kepala atau masalah dalam file batch tampaknya sangat tidak mungkin bagi saya. Setidaknya saya belum menemukan cara untuk melakukannya. Tentu saja, dengan solusi pertama Anda mendorong tanggung jawab itu ke orang yang menulis file konfigurasi.
sumber
Jika file konfigurasi eksternal juga merupakan file batch yang valid, Anda dapat menggunakan:
di dalam skrip Anda. Coba buat a.bat berikut:
dan b.bat:
Menjalankan a.bat akan menghasilkan keluaran:
sumber
call
, yang merupakan sinkron btw), dikatakan "proses tidak dapat mengakses file karena sedang digunakan" dan tidak dapat dipanggil.Batch menggunakan kurang dari dan lebih besar dari tanda kurung sebagai pipa input dan output.
Menggunakan hanya satu braket keluaran seperti di atas akan menimpa semua informasi dalam file itu.
Menggunakan braket kanan ganda akan menambahkan baris berikutnya ke file.
Ini akan mengeksekusi parameter berdasarkan baris file. Dalam hal ini, kami menggunakan dua baris yang akan diketik menggunakan "echo". Tanda kurung kiri menyentuh tanda kurung kurung kanan berarti informasi dari file tersebut akan disalurkan ke baris tersebut.
Saya telah menyusun file baca / tulis hanya contoh. Di bawah ini adalah file yang dipecah menjadi beberapa bagian untuk menjelaskan apa yang dilakukan setiap bagian.
SRU dapat berupa apa saja dalam contoh ini. Kami sebenarnya mengaturnya untuk mencegah crash jika Anda menekan Enter terlalu cepat.
Sekarang, kita perlu menulis variabel ke file.
Saya menggunakan .cdb sebagai kependekan dari "Command Database". Anda dapat menggunakan ekstensi apa pun. Bagian selanjutnya adalah menguji kode dari awal. Kami tidak ingin menggunakan variabel set yang dijalankan di awal file, kami sebenarnya ingin mereka memuat DARI settings.cdb yang baru saja kami tulis.
Jadi, kami baru saja menyalurkan dua baris informasi pertama yang Anda tulis di awal file (yang Anda memiliki opsi untuk melewati pengaturan baris untuk memeriksa untuk memastikannya berfungsi) untuk mengatur variabel input dan input2.
Ini menampilkan informasi yang disetel saat settings.cdb disalurkan ke dalam tanda kurung. Sebagai motivator kerja ekstra yang baik, menekan enter dan menyetel nilai default yang kita tetapkan sebelumnya sebagai "1" akan mengembalikan pesan pekerjaan yang baik. Penggunaan pipa braket berlaku dua arah, dan jauh lebih mudah daripada menyetel barang "UNTUK". :)
sumber
Jadi, Anda hanya perlu melakukan ini dengan benar ?:
sumber
Keluaran:
$ RunCount = 1
$ RunCount = 2
$ RunCount = 3
Teknik yang diuraikan di atas juga dapat digunakan untuk berbagi variabel di antara beberapa file batch.
Sumber: http://www.incodesystems.com/products/batchfi1.htm
sumber
Subjek agak lama tetapi saya memiliki pertanyaan yang sama beberapa hari yang lalu dan saya mendapatkan ide lain (mungkin seseorang masih akan menganggapnya berguna)
Misalnya, Anda dapat membuat config.bat dengan subjek berbeda (keluarga, ukuran, warna, hewan) dan menerapkannya satu per satu dalam urutan apa pun yang Anda inginkan dalam skrip batch Anda:
Setelah itu, Anda dapat menggunakannya di mana saja dengan memanggil sepenuhnya dengan 'call config.bat all' atau hanya memanggil sebagian saja (lihat contoh di bawah) Ide di sini adalah terkadang lebih berguna ketika Anda memiliki opsi untuk tidak memanggil semuanya di sekali. Beberapa variabel mungkin Anda belum ingin dipanggil sehingga Anda dapat memanggilnya nanti.
Contoh test.bat
Semoga ini membantu cara orang lain membantu saya di sini dengan jawaban mereka.
Versi singkat di atas:
config.bat
test.bat
Selamat siang.
sumber
Jangan lupakan parameter lama yang bagus. Saat memulai file * .bat atau * .cmd Anda dapat menambahkan hingga sembilan parameter setelah nama file perintah:
Contoh skrip
Myscript.bat bisa jadi seperti ini:
Contoh keluaran
sumber
Ketika mencoba menggunakan metode dengan konfigurasi yang dapat dikecualikan, saya perhatikan bahwa itu mungkin berfungsi atau mungkin TIDAK berfungsi tergantung di mana di skrip berada panggilan:
hubungi config.cmd
Aku tahu itu tidak masuk akal, tapi bagiku itu fakta. Ketika "call config.cmd" terletak di bagian atas skrip, itu berfungsi, tetapi jika lebih jauh dalam skrip itu tidak.
Dengan tidak berfungsi, maksud saya variabel tidak disetel ke skrip pemanggil.
Sangat sangat aneh !!!!
sumber