2013-03-24 200 views
2

我是新來的批處理,但認爲這是一個好方法,在部署它之前將我的網站的.less文件編譯爲.css。不幸的是,在批處理文件中使用For循環來查找所有.less文件並將它們編譯爲它們的.css等效文件後,即使在For循環後面有更多命令,我的腳本也會停止執行。。批處理for循環結束批處理腳本過早編譯

我的批處理腳本包含以下內容:「達到了批處理腳本結束」

@echo off 
rmdir c:\code\releaseDirectory /s /q 
echo d | xcopy /d c:\code\devDirectory c:\code\releaseDirectory /s 
cd c:\code\releaseDirectory 
for /r %%i in (*.less) do echo %%i 
for /r %%i in (*.less) do lessc -x %%i > %%~pi%%~ni.css 
echo reached the end of the batch script! 

當我運行此,輸出顯示所有.LESS的編譯發生,但字符串永遠不會顯示,因此,在.less編譯之後我想要採取的任何操作都不會發生。

任何想法爲什麼在for循環中少編譯後的腳本沒有執行?在此先感謝您花時間看看這個。

回答

2

在您的路徑中是否有lessc.bat

如果是這樣,你需要CALL lessc...


是否有一個 「奇怪」 的文件名?正在處理?

也許......做ECHO %%我& lessc -x %%我> %%〜PI %%〜ni.css

可以揭示更多...

+0

對不起,lessc是用於將.less文件編譯爲.css文件的.Less編譯器。 http://lesscss.org/#usage – 2013-03-25 00:22:41

+0

在添加額外的echo並將批處理腳本重定向到.txt文件後,for-loop的每行輸出看起來像是'c:\ Code \ releaseDirectory> echo c :\ Code \ releaseDirectory \ styles \ common.less&lessc -xc:\Code \ releaseDirectory \ styles \ common.less 1> \Code \ releaseDirectory \ styles \ common.css c:\Code \ releaseDirectory \ styles \ common。除了for循環的第一次迭代外,它只輸出'c:\ Code \ releaseDirectory \ styles \ about.less'。第一次迭代只會顯示出某種錯誤嗎? – 2013-03-25 00:55:01

+0

可能性更大。我建議你嘗試更改爲cd c:\ code \ releaseDirectory並從提示符中嘗試lessc -xc:\ Code \ releaseDirectory \ styles \ about.less> \ Code \ releaseDirectory \ styles \ about.css,並查看內容發生。也許實際上刪除'> ...'部分,並讓輸出顯示在屏幕上。 **順便說一句**'%%〜pni.css'會和'%%〜pi %%〜ni'一樣正常工作 – Magoo 2013-03-25 01:18:54

1

試試這個:

... 
for /r %%i in (*.less) do lessc.exe -x "%%~i" "%%~dpni.css" 
... 
+0

認爲它在Windows中通常是「lessc.cmd」而不是「lessc.exe」。但是,對於(* .less)中的/ r %% i,lessc -x「%%〜i」「%%〜dpni.css」將起作用。 – 2014-02-21 12:03:23