Bagaimana saya bisa mengatur variabel array dalam skrip batch DOS? Saya ingin memuatnya dengan daftar nama file untuk diproses. Saya benar-benar ingin membuat ini sesederhana mungkin. Terima kasih.
33
Bagaimana saya bisa mengatur variabel array dalam skrip batch DOS? Saya ingin memuatnya dengan daftar nama file untuk diproses. Saya benar-benar ingin membuat ini sesederhana mungkin. Terima kasih.
Jawaban:
Saya menemukan jawabannya:
Saya melakukan sesuatu seperti ini beberapa tahun yang lalu, jadi hanya perlu beberapa perhitungan. (Btw, saya benci menciptakan kembali roda.) Sekarang sudah diposting di sini, semoga orang lain akan merasakan manfaatnya juga.
sumber
()
sintaks.FILE_LIST[0]
.Ya, Anda dapat melakukan array dalam batch. Meskipun mereka tidak persis seperti array di C atau VB, Anda BISA melakukannya:
sumber
Dari Blog Jakash3, Array di Batch menjelaskan cara mengemulasi array di command prompt.
File batch bernama array.bat termasuk dalam artikel, yang berisi pustaka fungsi yang digunakan untuk menangani array. Anda harus memilih teks dalam artikel dan menempelkannya di dalam file bat.
Misalnya, skrip pengujian berikut:
menghasilkan output berikut:
sumber
Ini mengisi array dan mencetaknya
Anda bisa menggunakan names1 names2 names3, daripada nama [1] nama [2] nama [3] dengan menulis nama! I! alih-alih nama [! i!]. Ini menghasilkan array dengan menghasilkan nama variabel. Tidak ada struktur array dalam kumpulan. Tapi itu serapi struktur susunan apa pun, dan mempopulasikan atau mencetak tampak persis seperti bagaimana seseorang akan mengisi atau mencetak array dalam bahasa yang tepat (yang sebenarnya memiliki struktur susunan!)
hasil-
Beberapa penjelasan-
Itu
setlocal enabledelayedexpansion enableextensions
dengan! Var! daripada% var% diperlukan untuk mencegah perilaku aneh, sehingga variabel berperilaku dengan benar ketika dalam FOR atau IF. Ini adalah keanehan dengan file batch. Lihatset /?
mana itu disebutkan lebih lanjut.Inilah yang mengisi array, dan cukup mudah bagi siapa saja yang tahu tentang array. Anda juga bisa melakukannya
names[0]=bob
names[1]=tom
names[2]=joseph
meskipun salah satu keindahan dari sebuah array adalah kemampuan untuk mengisi sebuah array dengan sebuah loop, yang telah saya lakukan di sini.Ini menampilkan array. %% f jika Anda mengulanginya, Anda akan melihat mulai dari 0 hingga indeks terakhir array, dalam langkah-langkah 1. sehingga akan mencetak nama [0] nama [1] nama [2]
sumber
Untuk apa yang ingin Anda lakukan, bagaimana menggunakan variabel input untuk setiap nama file, yang dapat Anda ambil dengan variabel% 1% 2 dll. Mis.: File mybat.bat file1.nam file2.nam dll.
Anda kemudian dapat menggunakan variabel-variabel ini dalam satu lingkaran tetapi hanya perlu menggunakan% 1 sebagai parameter utama karena Anda dapat menggunakan SHIFT untuk membawa variabel-variabel lain ke dalam 'posisi'% 1, melakukan tes untuk null (akhir variabel) dengan sesuatu seperti JIKA "X% 1" == "X"
misalnya:
sumber
Jika Anda menyimpan daftar file ke filelist.txt, Anda bisa
FOR
membaca dan memproses setiap baris file, sepertiuntuk mencetak setiap baris file (hingga "|" pertama dalam baris. Jika Anda tidak menentukan pembatas Anda sendiri, spasi dan tab akan digunakan, jadi kecuali jalur Anda tidak memiliki spasi, Anda perlu menentukan karakter yang tidak akan muncul dalam file untuk mendapatkan baris lengkap).
sumber
Dalam salah satu komentar Anda untuk jawaban yang Anda katakan,
Saya percaya bahwa yang Anda cari adalah Makefile, dan mungkin cygwin memberi Anda cangkang yang layak (bash, atau apa pun rasanya).
sumber
Ganti string dan huruf dalam teks.
Coba untuk loop dengan memperluas teks ke for for body dan mengganti var dengan var. Seret dan jatuhkan file teks sehingga% 1 adalah input pengguna dengan menjalankan perintah set.
sumber
Sesuatu seperti ini di file batch? Pilih file dalam folder. << adalah komentar, tidak ada kode
sumber
Anda tidak dapat benar - benar melakukan array di command prompt (dan juga itu bukan DOS kecuali Anda menjalankan Windows 3.1). Namun, Anda dapat melakukan pemrosesan berbasis set dengan perintah FOR.
Untuk membuat daftar file yang akan diproses, Anda dapat secara manual membuat file teks untuk diproses, atau menggunakan
dir /b <mask>
perintah di dalam loop FOR.Sesuatu yang saya pelajari dengan susah payah untuk FOR - Anda perlu menggunakan variabel SINGLE CHARACTER sebagai kursor Anda!
sumber
Lihatlah dokumentasi Microsoft pada perintah FOR batch . Anda dapat menggunakan FOR untuk beralih pada satu set direktori, file dalam direktori, atau file dalam direktori dan semua sub-direktori.
Secara default, FOR menangani set atau hanya file:
Atau, untuk rekursif:
atau, hanya direktori:
sumber
ini adalah file debug kecil yang saya buat beberapa saat untuk menguji berbagai te dari game tic tac tow saya di BATCH / CMD. itu bisa membaca dan menulis ke dan dari array yang akan menjadi besar dan rumit pada kode.
menggunakannya sederhana:
Menulis ke array
Membaca dari sebuah array
Kode:
sumber