【问题标题】:Script to execute command to all files in folder对文件夹中所有文件执行命令的脚本
【发布时间】:2017-08-10 14:30:43
【问题描述】:

我是 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)并且我正在一个一个地处理文件; cnvtxls2csv 是转换器。 现在我有 ajax 上传并希望对文件夹中的所有文件执行 exec 命令,保留原始文件名。我尝试用 *(star) 替换 result.xls 来运行相同的代码,但它不起作用。

我有什么:

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

我想要什么:

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

更新:对目录中的所有文件执行命令以创建/编辑脚本的最佳方法是,在 bash 本身中对目录中的所有文件进行操作要容易得多。祝你好运。

【问题讨论】:

  • 你把*放在哪里了?大概在上面的代码中你的意思是/var/tmp/xls/*.xls(而不是/var/tmp/xls/result.xls*?)
  • @Andy yes, exec("/usr/local/bin/cnvt /var/tmp/xls/*.xlsx /var/tmp/");没用
  • 请说明$i的来源。

标签: php nginx exec


【解决方案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");
} 

【讨论】:

    猜你喜欢
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 1970-01-01
    相关资源
    最近更新 更多