【发布时间】:2012-10-29 16:09:52
【问题描述】:
我正在尝试使用 exec() 中的 forfiles 递归地仅删除目录中的 sql 文件。
这就是我所拥有的:
$dir = date('D jS, M Y \a\t H-i a') ;
exec('forfiles /p "E:\Database Dump\\'.$dir.'\" /m *.sql /c "cmd /c del @file"') ;
但是,当我在命令提示符下运行我的 PHP 脚本时,它表示“@file”不是参数/有效选项。
我知道它一定与路径名中的空格有关(我认为!),我尝试不带引号运行它,用 / 和 ^ 转义空格,但没有任何乐趣。
我该怎么做?
这是一个回声:
forfiles /p "E:\Database Dump\Fri 9th, Nov 2012 at 10-36 am\" /m *.sql /c "cmd /c echo @file"
【问题讨论】:
-
你是不是刚刚做了一个 print_r() of 'forfiles /p "E:\Database Dump\\'.$dir.'\" /m *.sql /c "cmd /c del @文件”'并查看它?
-
您可以更轻松地使用
for /f %f in ('dir $dir\*.sql /s/b') do del "%f"执行相同操作——将$dir替换为路径。根本不需要涉足forfiles和额外的shell。
标签: php for-loop batch-file cmd exec