Tolong pilih kategori sesuai, jenis posting (pertanyaan atau bukan) dan sertakan tag/topik yang sesuai misal komputer, php, mysql, dll.
Promosi atau posting tidak pada tempatnya akan kami hapus.
Mencantumkan kode program di posting Anda, tolong ikuti aturan yang sesuai, baca http://diskusiweb.com/discussion/39204/aturan-cara-menyisipkan-kode-program-di-diskusiweb

Baca cara posting gambar/image di post Anda: http://www.diskusiweb.com/discussion/47345/cara-menyisipkan-menyertakan-image-pada-posting/p1

Bagaimana cara tepat sintaks PHP untuk Membuka aplikasi bertipe .bat ?

Permisi master

Bagaimana ya cara yang tepat untuk membuka aplikasi bertipe .bat ?

Karena saya sudah mencoba semua sintaks di google dan php manual tetapi tidak ada yang berhasil.

ini lokasi aplikasi .bat nya

C:\Program Files (x86)\pentaho\data-integration\Spoon.bat

Mohon pencerahan master

Tanggapan

  • edited December 2017
    - tergantung isi file .bat nya sendiri.
    - tergantung cara elo menulis perintahnya.

    exec, passthru, system, dll bisa dipake,
    tapi ya balik, isi file .bat nya apa.

    gw pake 2 yg pertama buat :
    - ambil list service yg jalan ... bisa.
    - register service ke server (apache, mysql, gammu, dll) ... bisa semua.
    - start, stop, restart service juga bisa semua.
    - jalanin winrar via cli buat kompres folder / file juga bisa.
    dll ...
  • edited December 2017
    Kalo misal untuk membuka file Spoon.bat (yg diatas) itu saya buat dulu pemanggilannya di file baru program.bat
    Dan isinya :

    $ECHO OFF
    "C:\Program Files (x86)\pentaho\data-integration\Spoon.bat"
    EXIT

    Lalu cara pemanggilannya biar terbuka bagaimana aplikasinya ?

    Spoon.bat itu untuk membuka aplikasi Pentaho data integration.

    sudah pake exec, passthru tapi gak ada yg berhasil
  • isinya spoon.bat itu apa to ?
  • Ini master....




    @echo off
    setlocal

    cd /D %~dp0

    REM **************************************************
    REM ** Set console window properties **
    REM **************************************************
    REM TITLE Spoon console
    REM COLOR F0

    :: **************************************************
    :: ** Kettle home **
    :: **************************************************

    if "%KETTLE_DIR%"=="" set KETTLE_DIR=%~dp0
    if %KETTLE_DIR:~-1%==\ set KETTLE_DIR=%KETTLE_DIR:~0,-1%

    cd %KETTLE_DIR%

    set PENTAHO_JAVA=javaw
    set IS64BITJAVA=0

    call "%~dp0set-pentaho-env.bat"

    REM **************************************************
    REM Platform Specific SWT **
    REM **************************************************

    REM The following line is predicated on the 64-bit Sun
    REM java output from -version which
    REM looks like this (at the time of this writing):
    REM
    REM java version "1.6.0_17"
    REM Java(TM) SE Runtime Environment (build 1.6.0_17-b04)
    REM Java HotSpot(TM) 64-Bit Server VM (build 14.3-b01, mixed mode)
    REM
    REM Below is a logic to find the directory where java can found. We will
    REM temporarily change the directory to that folder where we can run java there
    pushd "%_PENTAHO_JAVA_HOME%"
    if exist java.exe goto USEJAVAFROMPENTAHOJAVAHOME
    cd bin
    if exist java.exe goto USEJAVAFROMPENTAHOJAVAHOME
    popd
    pushd "%_PENTAHO_JAVA_HOME%\jre\bin"
    if exist java.exe goto USEJAVAFROMPATH
    goto USEJAVAFROMPATH
    :USEJAVAFROMPENTAHOJAVAHOME
    FOR /F %%a IN ('.\java.exe -version 2^>^&1^|%windir%\system32\find /C "64-Bit"') DO (SET /a IS64BITJAVA=%%a)
    GOTO CHECK32VS64BITJAVA
    :USEJAVAFROMPATH
    FOR /F %%a IN ('java -version 2^>^&1^|find /C "64-Bit"') DO (SET /a IS64BITJAVA=%%a)
    GOTO CHECK32VS64BITJAVA
    :CHECK32VS64BITJAVA


    IF %IS64BITJAVA% == 1 GOTO :USE64

    :USE32
    REM ===========================================
    REM Using 32bit Java, so include 32bit SWT Jar
    REM ===========================================
    set LIBSPATH=libswt\win32
    GOTO :CONTINUE
    :USE64
    REM ===========================================
    REM Using 64bit java, so include 64bit SWT Jar
    REM ===========================================
    set LIBSPATH=libswt\win64
    set SWTJAR=..\libswt\win64
    :CONTINUE
    popd

    REM **********************
    REM Collect arguments
    REM **********************

    set _cmdline=
    :TopArg
    if %1!==! goto EndArg
    set _cmdline=%_cmdline% %1
    shift
    goto TopArg
    :EndArg

    REM ******************************************************************
    REM ** Set java runtime options **
    REM ** Change 512m to higher values in case you run out of memory **
    REM ** or set the PENTAHO_DI_JAVA_OPTIONS environment variable **
    REM ******************************************************************

    if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xmx512m" "-XX:MaxPermSize=256m"

    set OPT=%PENTAHO_DI_JAVA_OPTIONS% "-Djava.library.path=%LIBSPATH%" "-DKETTLE_HOME=%KETTLE_HOME%" "-DKETTLE_REPOSITORY=%KETTLE_REPOSITORY%" "-DKETTLE_USER=%KETTLE_USER%" "-DKETTLE_PASSWORD=%KETTLE_PASSWORD%" "-DKETTLE_PLUGIN_PACKAGES=%KETTLE_PLUGIN_PACKAGES%" "-DKETTLE_LOG_SIZE_LIMIT=%KETTLE_LOG_SIZE_LIMIT%"

    REM ***************
    REM ** Run... **
    REM ***************

    @echo on
    start "Spoon" "%_PENTAHO_JAVA%" %OPT% -jar launcher\launcher.jar -lib ..\%LIBSPATH% %_cmdline%
  • edited December 2017
    buang @echo off nya dulu.

    cara elo panggil file .bat nya dari php kaya apa ?

    coba pake passthru aja, biar output langsung muncul di browser.

    kalo ada pesan error yg muncul pi browser, posting kemari.
    kalo perintah .bat berhenti di baris tertentu, posting kemari baris terakhir yg di eksekusi.

    gw ndak ada pentaho, ndak ada kettle.

    gw cuma bisa memastikan sampai perintah ini :
    set IS64BITJAVA=0
    ndak ada masalah buat php.

    tapi setelahnya : call
    gw ndak bisa ngecek, itu mengeksekusi file .bat lain
  • edited December 2017
    Coba pertama :

    <?php
    $answer = passthru("C:/Program Files (x86)/pentaho/data-integration/Spoon.bat");
    echo $answer."</br>";
    ?>

    Hasil : muncul pesan

    DEBUG: Using PENTAHO_JAVA_HOME DEBUG: _PENTAHO_JAVA_HOME=c:\Program Files (x86)\Java\jdk1.8.0_60 DEBUG: _PENTAHO_JAVA=c:\Program Files (x86)\Java\jdk1.8.0_60\bin\javaw C:\Program Files (x86)\pentaho\data-integration>start "Spoon" "c:\Program Files (x86)\Java\jdk1.8.0_60\bin\javaw" "-Xmx512m" "-XX:MaxPermSize=256m" "-Djava.library.path=libswt\win32" "-DKETTLE_HOME=" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT=" -jar launcher\launcher.jar -lib ..\libswt\win32

    -------------------------------------------------------

    Coba kedua : masih loading lama

    <?php
    $answer = passthru("C:/xampp/htdocs/spoon/program.bat");
    echo $answer."</br>";
    ?>

    Hasil :

    C:\xampp\htdocs\spoon>"C:\Program Files (x86)\pentaho\data-integration\Spoon.bat" DEBUG: Using PENTAHO_JAVA_HOME DEBUG: _PENTAHO_JAVA_HOME=c:\Program Files (x86)\Java\jdk1.8.0_60 DEBUG: _PENTAHO_JAVA=c:\Program Files (x86)\Java\jdk1.8.0_60\bin\javaw C:\Program Files (x86)\pentaho\data-integration>start "Spoon" "c:\Program Files (x86)\Java\jdk1.8.0_60\bin\javaw" "-Xmx512m" "-XX:MaxPermSize=256m" "-Djava.library.path=libswt\win32" "-DKETTLE_HOME=" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT=" -jar launcher\launcher.jar -lib ..\libswt\win32
    Fatal error: Maximum execution time of 30 seconds exceeded in C:\xampp\htdocs\spoon\coba.php on line 2



    Atau ada salah penulisan kode programnya ?
  • edited December 2017
    passthru mah kagak perlu elo echo.
    passthru ndak ada return nya, void.
    itu emang langsung cetak output ke browser sendiri.

    itu @echo off nya di Spoon.bat nya beneran sudah di hapus ?

    kalo dijalankan manual, tanpa lewat php, outputnya harusnya apa ?

    kalo koding elo yg pertama "asumsi" gw jalan normal.
    tapi gw ndak tau output yg diharapkan apa.

    kalo yg kedua ...

    Use javaw when you do not want a command prompt window to appear. The javaw launcher will, however, display a dialog box with error information if a launch fails for some reason.

    error, jadi nungul dialog box, tapi berhubung di jalankan lewat php, dialog box nya ya ndak keliatan.
    dan status nya dialog boc tersebut tetep menunggu action.
    jadinya php elo sampai overtime.



    coba elo tulis di koding php nya :
    <pre>
    <?php
    passthru("C:/Program Files (x86)/pentaho/data-integration/Spoon.bat");
    ?>
    </pre>

    pake <pre> ...
    jadi yg nungul di browser rapi ke bawah.
    keliatan step by step command yg di eksekusi.



    <pre>
    <?php
    passthru('dir/w C:\\');
    ?>
    </pre>
     Volume in drive C is 2K8R2X64
    Volume Serial Number is 38FB-D94D

    Directory of C:\

    .rnd closefw.bat [Evaer]
    [gammu] [Kpcms] openfw.bat
    [PerfLogs] [Program Files] [Program Files (x86)]
    showfw.bat [Users] [Windows]
    [xampp]
    4 File(s) 1,451 bytes
    9 Dir(s) 2,671,243,264 bytes free
    ... rapi ...

    <?php
    passthru('dir/w C:\\');
    ?>
    Volume in drive C is 2K8R2X64 Volume Serial Number is 38FB-D94D Directory of C:\ .rnd closefw.bat [Evaer] [gammu] [Kpcms] openfw.bat [PerfLogs] [Program Files] [Program Files (x86)] showfw.bat [Users] [Windows] [xampp] 4 File(s) 1,451 bytes 9 Dir(s) 2,671,308,800 bytes free
    ... buyar ... :D :D :D
  • Sudah di jalankan tetap gak bisa.

    Iya @echo off sudah di hapus

    Apa perlu hasil step by step nya di copas disini ?
  • Hasil yang diharapkan itu, aplikasi Spoon-nya terbuka.

    Dan jika buka aplikasi spoon harus klik Spoon.bat nya
  • aplikasi spoon itu wujudnya apa ?
    window gitu ?
  • Iya master


  • yah ... :smiley: :smiley: :smiley:

    ya ndak bisa to maassss ...

    fungsi shell nya php itu murni command line.
    output juga mesti langsung ke stdout.

    jangankan spoon yg java.
    winrar yg "simple" aja juga kagak bakal mau.
    makanya winrar ada versi command line nya : rar.exe

    ini yg winrar x64
    <?php passthru('"C:\\Program Files\\WinRAR\\RAR.exe"'); ?>
    ... bisa, jalan, dan ada output nya ...

    <?php passthru('"C:\\Program Files\\WinRAR\\WinRAR.exe"'); ?>
    ... bubar, hang, soalnya itu aplikasi windowed, semua kontrol selanjutnya di window nya, ndak bisa dijangkau dari command line ...
  • Dulu pernah coba dan bisa. Tapi setelah reinstal windows jadi gak bisa.

    Jadi tidak ada solusi yg bisa digunakan, master ??

    Kira kira dari beberapa file disini ada yg bisa di panggil (seperti versi command line) nya ??




  • https://stackoverflow.com/questions/14059588/how-can-i-start-a-windows-gui-program-using-php

    gw kagak tau itu bisa jalan di tempat elo atau enggak ...
    tapi di tempat gw gagal.
    terlalu banyak environment yg mempengaruhi.
    - os
    - versi web server & setting web server
    - versi php & setting php
    - dll

    tapi yg pertama mesti dilakukan, kalo pake apache, kalo dijalankan sebagai service, mesti ubah setting di services.msc nya.
    di tab "Log On", aktifkan : [ ] Allow service to interact with desktop
    lalu restart apache nya.
  • Belum paham maksudnya master :|

    Dari link ini :
    https://stackoverflow.com/questions/14059588/how-can-i-start-a-windows-gui-program-using-php

    <?php
    // C:\my\htdocs\script.php
    exec('"C:\Program Files (x86)\Notepad++\notepad++.exe" "C:\foo.php"');

    foo.php itu file yg berisi apa ya

    Kira-kira jika menggunakan seperti di link ini,

    https://stackoverflow.com/questions/1403203/php-how-do-i-start-an-external-program-running-having-trouble-with-system-and/8170050#8170050

    Apa akan berpengaruh pada jalannya aplikasi leptop yang lain, master ?
  • Master, saya dapat kode ini dari link diatas.
    Tapi kurang mengerti jika diterapkan dengan lokasi aplikasi spoon.


    shell_exec('SCHTASKS /F /Create /TN _notepad /TR "notepad.exe" /SC DAILY /RU INTERACTIVE');
    shell_exec('SCHTASKS /RUN /TN "_notepad"');
    shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');

    Ini ditulisnya bagaimana ya di kode atas?.

    C:/Program Files (x86)/pentaho/data-integration/Spoon.bat
  • Pakai yang ini juga gak berhasil master

    Start->Run, type "services.msc" to bring up Services control (other ways to get there, this is easiest IMO)
    Locate your Apache service (mine was called "wampapache" using WampServer 2.0)
    Open the service properties (double-click or right click->properties)
    Flip to the Log On account and ensure the checkbox titled "Allow service to interact with Desktop" is checked
    Flip back to the General tab, stop the service, start the service
    Now, using the code below, you can spawn UI processes from PHP. In the first code snippet, the script will not wait for the application to close; the second snippet waits for the program to close before continuing (blocking).

    Do not wait for application:

    pclose(popen("start /B notepad.exe", "r"));

    Wait for application:

    system('start notepad.exe');
  • edited December 2017
    "foo.php itu file yg berisi apa ya"

    itu cuma contoh.
    itu kan mau buka editor notepad++.
    tapi bukan cuma sekedar buka biasa, saat buka, sekalian buka "foo.php" di notepad++.
    ya file apa aja yg mau dibuka di notepad++ nya.

    "Apa akan berpengaruh pada jalannya aplikasi leptop yang lain, master ?"

    enggak, itu kan cuma setting service nya apache.
    cuma mengatur cara kerja service apache kalo berkaitan dgn membuka aplikasi desktop lain.

    "Ini ditulisnya bagaimana ya di kode atas?."

    itu bukan dibuka langsung, tapi di daftarkan di task scheduller.
    nanti task scheduller nya yg buka notepad nya.

    coba hapus dulu perintah ini :
    shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');

    lalu buka task scheduller nya windows.
    coba elo jalankan script php yg pake SCHTASKS.
    lalu elo refresh task scheduller nya.
    pasti muncul di daftar task yg harus jalan.

    shell_exec('SCHTASKS /F /Create /TN _notepad /TR "notepad.exe" /SC DAILY /RU INTERACTIVE');
    ... tambah task yg harus dijalankan di task scheduller, /SC DAILY jalannya harian ...

    shell_exec('SCHTASKS /RUN /TN "_notepad"');
    ... /RUN jalankan task saat ini juga ...

    shell_exec('SCHTASKS /DELETE /TN "_notepad" /F');
    ... /DELETE hapus task di task scheduller ...

    "Pakai yang ini juga gak berhasil master"

    kan gw sudah bilang ...

    gw kagak tau itu bisa jalan di tempat elo atau enggak ...
    tapi di tempat gw gagal.
    terlalu banyak environment yg mempengaruhi.
    - os
    - versi web server & setting web server
    - versi php & setting php
    - dll
    di situ juga ditulis :
    This has been tested on Windows XP. I have not tried it on any other Windows versions, your millage may vary.
    gw pake cara yg sama, pake :
    - buka services.msc, tab "Log On",
    [V] Allow service to interact with desktop ... di check / centang
    apply / ok, tutup
    - restart apache (stop apache, start lagi ...)
    - lalu pake script php yg :
    pclose(popen('"C:\\Program Files\\WinRAR\\WinRAR.exe"', "r"));
    path ditulis lengkap ...

    jalan, bisa ke buka ... tapi ...
    cuma bisa jalan tadi malam :smiley: :smiley: :smiley:
    ini ta coba lagi gagal :smiley: :smiley: :smiley:
    tapi ada popup lain yg terbuka, konfirmasi bakal ada aplikasi windowed yg bakal jalan
    - bikin ndak nyaman
    - mesti ada approval buat menjalankan
    - window approval nya juga ndak langsung nungul di depan, tapi cuma nungul minimized di taskbar
    - lalu aplikasi windowed nya terbukanya kaya di desktop yg lain

    os gw : Windows Server 2008 R2 SP1 x64 (setara Win 7 SP1 x64 kalo versi desktop)
    apache 2.4.28
    php 7.1.10

    bailik lagi ...
    terlalu banyak environment yg mempengaruhi.
  • edited December 2017
    Jadi gak bisa juga pake solusi itu ya, master...

    Ya sudah, makasih master
  • gw ndak bisa memastikan ...
    bahwa yg bisa jalan di tempat gw bakal jalan di tempat elo.

    gitu aja sih.

    btw, yg pake SCHTASKS sudah di coba di tempat elo ?
    dan gagal juga ?
  • Gak paham yang ini master..

    shell_exec('SCHTASKS /RUN /TN "_notepad"');
    ... /RUN jalankan task saat ini juga ...

    itu yang "_notepad" diisi sesuai path file spoon.bat nya atau bagaimana ?
  • edited December 2017
    shell_exec('SCHTASKS /F /Create /TN _MyTask /TR "C:/Program Files (x86)/pentaho/data-integration/Spoon.bat" /SC DAILY /RU INTERACTIVE');
    shell_exec('SCHTASKS /RUN /TN "_MyTask"');
    shell_exec('SCHTASKS /DELETE /TN "_MyTask" /F');

    _notepad
    _MyTask
    itu bebas kok, elo cuma ngasih identitas di task scheduler nya
Sign In or Register to comment.