在批处理文件中使用PHP -W标志

时间:2010-01-02 20:58:16

标签: php batch-file

我正在尝试使用PHP CLI中提供的-W标志从我的.php文件中删除所有空格和代码注释。我正在使用批处理文件以递归方式遍历项目中的每个php文件。批处理命令如下所示:

FOR /F "tokens=*" %%G IN ('DIR /B /A-D /S *.php') DO "%php-exe-path%/php.exe" -w %%G > %%G 

这只会产生空白.php文件(使用'>'重定向器),但是使用附加重定向器('>>')可以正常工作。我不确定这是PHP锁定文件的问题还是我的批处理命令的一些问题。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

通常:不要再将使用文件的命令的输出传输到文件中。而是管道到临时文件,删除旧文件并将临时文件重命名为旧名称。有点像以下:

FOR /F "tokens=*" %%G IN ('DIR /B /A-D /S *.php') DO (
    "%php-exe-path%/php.exe" -w %%G > %%G.temp
    del %%G
    ren %%G.temp %%G
)

旁注:请不要在for /f的输出上使用dir,因为这会引入一些微妙但令人讨厌的错误。而是使用正确的方法迭代纯文件for,并使用/r开关递归:

FOR /R %%G IN (*.php) DO (
    "%php-exe-path%/php.exe" -w %%G > %%G.temp
    del %%G
    ren %%G.temp %%G
)