Solusi untuk menjalankan program lain dengan argumen yang ditentukan dalam file konfigurasi statis?

0

Adakah solusi yang siap pakai untuk menjalankan program ( sebut saja itulauncher.exe ) dengan .exeekstensi file ( ekstensi penting ) yang mencari file konfigurasi statis, misalnya launcher.cfg, dan meluncurkan program lain yang ditentukan dalam file konfigurasi.

Atau mungkin launcher.exeitu akan mengeksekusi launcher.cmdatau skrip lain yang dapat digunakan untuk meneruskan kontrol.

Penjelasan lain tentang persyaratan jika itu belum cukup jelas:

1. Pengguna atau peluncuran program lainprogram.exe
2. program.exe peluncuranprogram.cmdyang dijalankan oleh skrip shellcmd.exe

Yang penting launcher.exeadalah program dengan .exeekstensi file dan tidak memerlukan argumen baris perintah untuk meluncurkan skrip lain atau program dengan argumen baris perintah.

Sampo Sarrala
sumber
Bolehkah saya bertanya mengapa? Ini adalah tugas yang cukup sepele di sebagian besar bahasa pemrograman utama, tetapi saya tidak melihat tujuannya. Anda ingin menjalankan executable dengan ekstensi .exeyang meluncurkan .bat?
Bob
@ Bob Ya, perilaku itu diperlukan saat mengganti bagian-bagian aplikasi yang terdiri dari banyak file .exe yang diluncurkan oleh modul pengontrol aplikasi.
Sampo Sarrala

Jawaban:

1

Saya tidak mengetahui adanya program siap pakai yang melakukan ini.

Saya punya sedikit waktu luang, jadi inilah program C ++ yang cepat.

#include <cstdlib>
#include <cstdio>
#include <cstring>

#define COMMAND_PRE "call "
#define COMMAND_POST ".bat"

using namespace std;

int main(int argc, char *argv[]) {
    char command[strlen(COMMAND_PRE) + strlen(argv[0]) + strlen(COMMAND_POST) + 1];

    strcpy(command, COMMAND_PRE);
    strcat(command, argv[0]);
    strcat(command, COMMAND_POST);

    printf("Running \"%s\"", command);
    system(command);

    system("pause");
}

Tentu saja, Norton cukup baik untuk menyebutnya berisiko tinggi karena system(command);jalur, yang hanya mengeksekusi .batfile. Apa pun, saya tidak dapat diganggu mencoba untuk menemukan metode yang aman antivirus (dan perlindungan "SONAR" Norton cukup sering bereaksi).

Beri nama program whatever.exedan itu akan menjalankan file whatever.exe.bat. Dengan kata lain, itu akan mengambil nama file sendiri (dan path), tambahkan .batsampai akhir, dan jalankan.

Anda dapat mengompilasinya sendiri dari sumber di atas. Saya juga akan memberikan tautan unduhan ke program yang dikompilasi di sini , tetapi gunakan dengan risiko Anda sendiri - tidak ada orang di sini yang bertanggung jawab atas apa yang mungkin terjadi

Bob
sumber
+1 Jawaban ini cukup baik dan saya sudah berpikir bahwa saya mungkin perlu makesatu untuk tujuan itu. Saya hanya malas dalam mengatur dev env ke virtualbox yang merupakan winmachine saya satu-satunya dan berpikir jika seseorang sudah mengetahui beberapa solusi untuk itu ... sebenarnya aplikasi yang menggunakan banyak .exefile adalah windows :)
Sampo Sarrala
1

Saya telah menemukan solusi alternatif untuk ini yang menurut saya tidak sebagus jawaban Bob.

Namun, ini adalah solusi yang berfungsi dan saya akan mempostingnya untuk referensi di masa mendatang:

.cmddan .batfile dapat dikompilasi ke .exefile ( dengan beberapa batasan ) dengan batch compilerditemukan di sf.net/projects/batchcompiler .

Dengan cara ini orang dapat menulis file batch

start anotherbatch.cmd /arg1 /arg2

Dan kompilasi itu untuk batchfile.exe

Sampo Sarrala
sumber
Dengan asumsi keterbatasan yang Anda sebutkan tidak termasuk ini, Anda dapat meniru program saya: echo Running "%0.bat"diikuti oleh call %0.batdiikuti oleh pauseharus melakukan hal yang persis sama.
Bob
@ Bob Ini adalah salah satu batasan yang saya sebutkan, paling tidak dengan compiler yang saya tautkan, ia tidak akan meluas %0saat runtime tetapi menyimpannya sebagai nilai konstan ketika dikompilasi sehingga program yang dikompilasi tidak akan berperilaku persis seperti file batch asli.
Sampo Sarrala