3

我是批处理的新手,但我发现在部署之前将我的网站的.less文件编译成 .css 是一种好方法。

不幸的是,在我for在批处理文件中使用循环来查找我的所有 .less 文件并将它们编译成它们的 .css 等效项之后,即使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执行循环中的较少编译后没有任何脚本?

4

3 回答 3

4

我遇到了同样的问题,不得不更改lessccall lessc,然后我的脚本停止过早结束。这是一个引导我尝试的 SO 链接:为什么调用嵌套批处理文件而不在该行前面加上“调用”退出父批处理文件?基本上它说您需要call在执行嵌套批处理文件时使用,以便在子文件完成执行时将控制权返回给父文件。

于 2014-03-03T19:22:08.077 回答
3

lessc.bat你的路径中有一个吗?

如果是这样,您需要CALL lessc...


有一个“奇怪”的文件名吗?正在处理?

也许...做ECHO %%i& lessc -x %%i > %%~pi%%~ni.css

可能会透露更多...

于 2013-03-24T23:28:07.297 回答
1

尝试这个:

...
for /r %%i in (*.less) do lessc.exe -x "%%~i" "%%~dpni.css"
...
于 2013-03-25T04:22:58.507 回答