php exec vbs脚本仅在循环中第一次工作

时间:2015-08-28 23:43:04

标签: php excel vbscript exec windows-scripting

我正在制作将excel文件转换为csv文件的脚本。 Excel文件位于downloads文件夹中,以“START”开头。只转换了第一个文件,然后php仍在运行,但没有任何反应。从浏览器运行它我可以看到圆圈正在运行,就像加载网站一样。这是代码:

$path = "C:\Users\\tom\Downloads\\";


foreach(glob($path."*.xls") as $excel_file) {
    $substr = substr($excel_file, 24, 5);
    if($substr = "START") {
        $csv_file = str_replace(".xls", ".csv", $excel_file);
        exec("$path"."csv.vbs $excel_file $csv_file");
    }
}

我使用的脚本是csv.vbs脚本,代码是:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done" 

使用shell_exec是一样的。这有什么不对?

2 个答案:

答案 0 :(得分:1)

根据php.net

,$ substr不等于“START”
substr ( string $string , int $start [, int $length ] )

和START是5个字符,所以

$substr = substr($excel_file, 0, 5);

并且有一个错误的比较尝试

if($substr = "START") 

正确的比较是使用==或===进行严格比较

if($substr == "START")

答案 1 :(得分:0)

删除了csv.vbs

中的最后一行
WScript.Echo "Done" 

它工作正常