2013-03-24 145 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