Bagaimana cara membuat Batch Script Windows untuk melakukan ini?


0

Saya menjalankan Windows-7. Saya ingin membuat file Batch Windows yang berfungsi seperti ini:

  1. Jalankan exe dengan argumen tertentu. Tunggu eksekusi lengkap dari exe ini. (EXE ini pada dasarnya merekam aliran video online dan seharusnya merekamnya selama 1 jam 5 menit)
  2. Namun, jika exe keluar (berhenti merekam & keluar dari eksekusi) sebelum periode waktu yang ditentukan (1 jam 5 menit), jalankan exe yang sama dengan argumen berbeda untuk durasi yang tersisa. Matikan eksekusi EXE ketika total waktu periode (termasuk tun pertama EXE di Langkah 1) mencapai 1 jam 5 menit.
  3. Lanjutkan untuk mengeksekusi exe dengan argumen berbeda hingga durasi waktu kumulatif mencapai 1 jam 5 menit.
  4. Bunuh eksekusi EXE dan keluar dari eksekusi file batch ketika file batch telah berjalan selama 1 jam 5 menit.

catatan: Exe mengambil dua argumen: input stream address dan output filname. Satu-satunya argumen yang berubah dalam setiap proses EXE di atas adalah nama file yang berubah dari "FileName" di jalankan pertama ke "FileName2" ketika menjalankan pertama keluar sebelum 1 jam 5 menit. Dan nama file akan bertambah menjadi Filename2, Filename3 dan seterusnya hingga waktu run kumulatif file batch ini mencapai 1 jam 5 menit. Untuk contoh nyata, lihat perintah ini:

"C:\Windows\System32\rtmpdump.exe" -i rtmpt://154.500.69.6/live -o "C:\Users\user\Desktop\Filename.extension"

Perintah yang disebutkan di atas adalah apa yang harus dijalankan pertama kali. Dalam menjalankan berikutnya (yang diperlukan hanya jika eksekusi pertama ini keluar sebelum tujuan 1 jam 5 menit), hanya nama file yang perlu diubah ke Filename2.extension seperti yang ditunjukkan pada perintah di bawah ini:

"C:\Windows\System32\rtmpdump.exe" -i rtmpt://154.500.69.6/live -o "C:\Users\user\Desktop\Filename2.extension"

Dan urutan ini perlu dilanjutkan hingga proses kumulatif file batch ini mencapai 1 jam 5 menit.


1
PowerShell pasti, Batch sangat mungkin juga (meskipun saya bukan pro batch)
SimonS

1
Saya tidak melihat bagaimana batch dapat melakukan ini. Batch tidak memiliki cara canggih untuk mengetahui berapa banyak waktu telah dikembangkan dan bertindak sesuai, meskipun mungkin dapat memprogram tugas yang dijadwalkan, tetapi itu dapat mengganggu perekaman yang berhasil. Saya akan menggunakan vbscript alih-alih batch, tetapi jika PowerShell dapat melakukannya juga, itu lebih dekat ke batch.
LPChip

1
@ LPChip Batch bisa melakukan ini tetapi akan sangat menyakitkan :)
DavidPostill

Harap dicatat bahwa Pengguna Super bukan layanan penulisan skrip. Jika Anda memberi tahu kami apa yang telah Anda coba sejauh ini (termasuk skrip yang Anda gunakan) dan di mana Anda macet, kami dapat mencoba membantu dengan masalah tertentu. Anda juga harus membaca Bagaimana saya mengajukan pertanyaan yang bagus? .
DavidPostill

Jawaban:


1

Batch tidak dapat melakukan ini secara langsung. Semua Batch biasanya dilakukan adalah menjalankan program eksternal. Ada beberapa kemampuan untuk melompat / goto / loop, dan variabel dapat digunakan, meskipun menggunakan variabel agak menyakitkan.

Jadi, karena sebagian besar yang dilakukan orang dengan Batch adalah menjalankan program eksternal, tujuan Anda tidak akan belajar Batch dengan sangat baik. Tujuan Anda adalah menemukan program yang melakukan hal-hal yang ingin Anda lakukan.

Menjalankan program dengan parameter baris perintah dapat dilakukan. TASKLIST dapat membantu menentukan apakah suatu program sedang berjalan, atau WMIC. Namun, memeriksa waktu mungkin bukan hal yang paling sederhana.

Pilihan lain adalah menggunakan Windows Scripting Host (WSH), yang memungkinkan Anda menjalankan JScript (dasarnya JavaScript) atau VBScript. Ini dilakukan dengan program CScript (atau program WScript). Pendekatan itu mungkin akan membuat Anda melihat waktu, meskipun detail lebih tepat dijawab oleh StackOverflow (pemrograman) daripada SuperUser (komputasi umum).

(Seperti disebutkan di tempat lain, PowerShell juga bisa menjadi alternatif yang mungkin lebih mudah daripada Batch.)

Daripada memeriksa apakah rekaman berlangsung selama 65 menit, Anda mungkin ingin memeriksa ERRORLEVEL (juga dikenal sebagai Kode Kesalahan, Kode Keluar, atau Kode Pengembalian) dari program. Banyak program menggunakannya sebagai cara untuk berkomunikasi dengan mudah apakah suatu proses berhasil atau tidak. Cara tepat untuk melakukannya tergantung pada bahasa pemrograman yang Anda gunakan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.