次のバッチコード(ファイルのautoFTP.bat
名前は)は、フォルダーからファイルの名前を変更します。
@echo off
setlocal EnableDelayedExpansion
::---------- Path to files that must be renamed
for /f "delims=" %%i in ('dir /b D:\folder\*.htm') do (
::---------- Path to md5sums.exe
for /f "skip=3 delims=" %%j in ('md5sums -n -b "%%i"') do (
set number=%%i
set file=%%j
set file=!file:*.htm=!
for %%k in (!file!) do (
ren "%%i" "%%k.htm"
echo "!number! %%k"
)
)
)
echo.
でupdate.php
、バッチファイルを実行し、phpファイルで結果(ファイルの新旧の名前)を取得したいと思います。含まれていupdate.php
ます:
$fileName = exec("cmd /c D:\folder\autoFTP.bat", $out);
foreach($out as $line) {
echo $line;
}
私がphpマニュアルで読んだものから$out
、結果の配列であるはずですが、$line
空です。
理論的には、名前が変更されたファイルの名前(ファイルではなく、ファイルの名前が変更された名前のみ)をDBで更新したいという考えです。したがって、これを行うには、$out
変数にファイルの元の名前と名前を変更した名前を含める必要があります。
cmdから独立して実行するautoFTP.bat
と、正しく機能します。しかし、から呼び出してみるとupdate.php
、何もしません。
私は何か間違ったことをしていますが、何がわからないのです。