用于对文件夹中的所有文件执行命令的脚本

时间:2017-08-03 11:23:08

标签: php nginx exec

我是Freebsd / nginx的新手,所以类似的QA对我没有帮助;( 我正在运行代码:

$ext = pathinfo ($_FILES['rawexcel']['name'][$i], PATHINFO_EXTENSION);

//get extension of file, run different converters depending on extension
if ($ext == 'xlsx' ) {   exec("/usr/local/bin/cnvt   /var/tmp/xls/result.xlsx  /var/tmp/result.csv "); } 
else 
if ($ext == 'xls' ) {   exec("/usr/local/bin/xls2csv -x /var/tmp/xls/result.xls* -b WINDOWS-1251 -c /var/tmp/result.csv -a UTF-8"); } 
/var/tmp/xls/

当我的文件名是常量时(result.xls然后转换为result.csv)&我一个接一个地处理文件; cnvt xls2csv 是转换器。 现在我有ajax上传,并希望对文件夹中的所有文件执行 exec 命令,保留原始文件名。我尝试运行相同的代码,将result.xls替换为 *(star),但它不起作用。

我有什么:

带有excel文件的tmp / xls文件夹

我想要的是什么:

将所有excel文件inna文件夹转换为.csv,保留其原始名称。 将不胜感激任何帮助。

UPDATE:为目录中的所有文件执行命令以创建/编辑脚本的最佳方法,在bash本身中操作目录中的所有文件更加容易。祝你好运。

1 个答案:

答案 0 :(得分:1)

了解您如何解析扩展程序......

  

$ ext = pathinfo($ _FILES [' rawexcel'] [' name'] [$ i],PATHINFO_EXTENSION);

您可以查看pathinfo docs,然后了解如何获取没有路径或扩展名的文件名:

$filename = pathinfo($_FILES['rawexcel']['names'][$i], PATHINFO_FILENAME);

然后你可以使用它......

if ($ext == 'xlsx' ) {
    exec("/usr/local/bin/cnvt   /var/tmp/xls/$filename.xlsx /var/tmp/$filename.csv ");
} else if ($ext == 'xls' ) {
    exec("/usr/local/bin/xls2csv -x /var/tmp/xls/$filename.xls -b WINDOWS-1251 -c /var/tmp/$filename.csv -a UTF-8");
}