Excel — PHP скрипт exec vbs работает только первый раз в цикле

Я делаю скрипт для преобразования файлов Excel в CSV-файлы. Файлы Excel находятся в папке загрузок и начинаются с «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 та же. Что здесь не так?

0

Решение

$ substr не равно «START» согласно php.net

substr ( string $string , int $start [, int $length ] )

и СТАРТ 5 символов так

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

и есть неправильное сравнение, попробуйте

if($substr = "START")

правильное сравнение — использование == или === для строгого сравнения

if($substr == "START")
1

Другие решения

Удалена последняя строка в csv.vbs

WScript.Echo "Done"

и работает нормально

0

По вопросам рекламы [email protected]