2010-01-02 36 views
1

我試圖通過使用可從PHP CLI獲得的-W標誌從我的.php文件中刪除所有空白和代碼註釋。我正在使用批處理文件遞歸循環遍歷項目中的每個php文件。批處理命令如下:在批處理文件中使用PHP -W標誌

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

這只是生產空白.php文件(使用「>」重定向),但使用追加重定向(「>>」)工作正常。我不確定這是否是PHP鎖定文件時遇到的問題,或者是有關我的批處理命令的問題。

任何人都可以幫忙嗎?

+0

如果你贊成的Cygwin下降的cmd.exe,你會做自己一個大忙(HTTP:/ /www.cygwin.com/)或至少MSYS(http://www.mingw.org/)。 POSIX shell是一個更加豐富的編程環境,它的文檔比cmd.exe更好,用戶社區更廣泛,交互性更好。 – 2010-01-02 21:24:22

+0

只是有人:對於手頭的問題,這個建議幾乎是假的,因爲問題依然存在。 – Joey 2010-01-02 21:52:58

回答

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的輸出,可以引進一些微妙的,但討厭的錯誤。相反,與/r開關使用遍歷文件,這只是普通的for的正確方法,以及遞歸:

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

+1。當使用「>」重定向操作符時,這是完全標準的操作過程。 – 2010-01-02 21:27:49

+0

由於這是返回我需要改變幾個位的完整路徑。用附加的'.temp'替換下劃線,並將重命名命令改爲'ren %% G.temp %%〜NG.php'。感謝所有的幫助。 – CJD 2010-01-03 12:03:23

+0

啊,對。對不起。更正 – Joey 2010-01-03 13:28:34