

phpからバッチファイルを起動したいと考えています。

[code]

    exec("cmd.exe /c (ドライブ名)aaa.bat");
    
[/code]

と通常はなると思いますがaaa.batがphpのサーバーにある場合  
パスの指定はどうなるのでしょうか？  
また、batファイルの中のプログラム上でも特定のフォルダー上にある場合  
どうすればいいでしょうか？

[code]

    copy (ドライブ名)aaa.txt (ドライブ名)bbb.txt
    
[/code]

よろしくお願いいたします。

### 追記

> ローカル環境はWindowsかと思いますが、「phpのサーバ」のOSは何になるのでしょうか？

Linuxみたいです。


CC BY-SA 4.0
2018-12-07T06:59:16.220
50997
2018-12-09T10:52:41.110
2018-12-09T03:10:50.457
19110
31311
question
php batch-file
Batch Fileをサーバーに置いたときのパスの指定方法


ファイルパス以前の問題として、Windows と Linux 系 OS
では[実行可能ファイル](https://ja.wikipedia.org/wiki/%E5%AE%9F%E8%A1%8C%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)のファイル形式が異なるので、Linux
上では cmd.exe を直接実行することができません。php が実行されているサーバーが Linux ということなので、`exec`
関数で実行するファイルは Linux の形式の実行可能ファイルでなくてはいけません。Linux 上で cmd.exe
を間接的に実行する方法はありますが、今回の問題を効率的に解決するものではないです。

Windows でバッチファイルと呼ばれているものは、典型的な Linux 系 OS
ではシェルスクリプトと呼ばれるものになります。本当に外部スクリプトを実行したいのであれば、シェルスクリプトを書いて `sh` や `bash`
などのシェル経由で実行することになるかと思います。

しかしそもそもの問題として、なぜ外部スクリプトを実行したいのでしょうか？ php のプログラムとして書くことはできませんか？ php
のプログラムとして書くことができれば、バッチファイル／シェルスクリプトという差異は吸収することができます。たとえば php の [`copy()`
関数](http://php.net/manual/ja/function.copy.php)を使えばファイルのコピーができます。

これらの前提のもとで、Linux 系 OS の上では Linux 系のファイルパスの指定方法をそのまま使えばファイルを指定することができます。


CC BY-SA 4.0
2018-12-09T03:21:56.500
51053
2018-12-09T10:52:41.110
2018-12-09T10:52:41.110
19110
19110
50997
answer