以下批处理代码(文件名为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
变量包含文件的原始名称以及重命名的文件。
如果我autoFTP.bat
从 cmd 独立运行,它将正常工作;但是当我尝试从中调用它时update.php
,它什么也不做。
我做错了什么,但我不知道是什么。