DOS script 裡迴圈的神奇語法
原本在 linux 上跑得好好的 shell,
突然因為需要得搬到 windows server 上跑
只好把它改成 .bat
一個很 ez 的迴圈 assign classpath 的動作
在 dos 上居然怎麻跑都不對勁,
剛改完的 .bat :
google 了半天, 發現這個東東 ...
setlocal enabledelayedexpansion
一加上去馬上 work, 至於解釋, 看嘸, 也懶得看了 >__<
執行結果 :
WTF DOS !!!
突然因為需要得搬到 windows server 上跑
只好把它改成 .bat
一個很 ez 的迴圈 assign classpath 的動作
在 dos 上居然怎麻跑都不對勁,
剛改完的 .bat :
@echo off執行結果 :
set CLASSPATH=.;c:\tomcat\webapps\abc\WEB-INF\classes
set MYDIR=d:\tmp\cd
for %%x in (%MYDIR%\*.jar) do (
echo %%x
set CLASSPATH=!CLASSPATH!;%%x
echo %CLASSPATH%
)
echo %CLASSPATH%
E:\tmp>test.bat感覺只有最後一次迴圈的 assign 有作用,
d:\tmp\cd\common-lib1.jar
.;c:\tomcat\webapps\abc\WEB-INF\classes
d:\tmp\cd\common-lib2.jar
.;c:\tomcat\webapps\abc\WEB-INF\classes
d:\tmp\cd\common-lib3.jar
.;c:\tomcat\webapps\abc\WEB-INF\classes
!CLASSPATH!;d:\tmp\cd\common-lib3.jar
google 了半天, 發現這個東東 ...
setlocal enabledelayedexpansion
一加上去馬上 work, 至於解釋, 看嘸, 也懶得看了 >__<
@echo off
setlocal enabledelayedexpansion
set CLASSPATH=.;c:\tomcat\webapps\abc\WEB-INF\classes
set MYDIR=d:\tmp\cd
for %%x in (%MYDIR%\*.jar) do (
echo %%x
set CLASSPATH=!CLASSPATH!;%%x
echo %CLASSPATH%
)
echo %CLASSPATH%
執行結果 :
E:\tmp>test.bat
d:\tmp\cd\common-lib1.jar
.;c:\tomcat\webapps\abc\WEB-INF\classes
d:\tmp\cd\common-lib2.jar
.;c:\tomcat\webapps\abc\WEB-INF\classes
d:\tmp\cd\common-lib3.jar
.;c:\tomcat\webapps\abc\WEB-INF\classes
.;c:\tomcat\webapps\abc\WEB-INF\classes;d:\tmp\cd\common-lib1.jar;d:\tmp\cd\common-lib2.jar;d:\tmp\cd\common-lib3.jar
WTF DOS !!!
留言