用空格parsingstring列表

我对bash脚本还是比较陌生的,这是相当头疼的事情。 我已经想出了一些解决scheme,但他们都非常肮脏…

我的目标是使用以下代码自动创build一堆符号链接:

set repoDir=C:\aRandomPath set cloudDir=C:\AnotherRandomPath set filesToLink=(FMODAssets,Resources,Scenes,ScenesTests,Standard Assets,StreamingAssets) @echo off ECHO "Will link" for %%A in %filesToLink% do ( echo. mklink /J "%repoDir%\Assets\%%A" "%cloudDir%\%%A" ) 

不幸的是,这有一个parsing“标准资产”作为2个string:“标准”和“资产”的副作用。 解决这个问题的可接受的方式是什么?

set filesToLink删除括号

 set filesToLink=FMODAssets,Resources,Scenes,ScenesTests,Standard Assets,StreamingAssets 

然后使用

 for %%A in ("%filesToLink:,=","%") do ( ECHO(mklink /J "%repoDir%\Assets\%%~A" "%cloudDir%\%%~A" ) 

","替换字符串中的每一个,并用引号包围整个字符串,给出"sring1","string two","string3"...每个“引用元素”依次赋值给%%A~运算符删除引号。

这应该做到这一点。 Delims =,指定只有逗号是分隔符。 %% A是下一个标记,%% B是该行的其余部分。 :LinkFiles调用自己,直到我们已经处理了所有的令牌。

 @echo off set repoDir=C:\aRandomPath set cloudDir=C:\AnotherRandomPath set "filesToLink=FMODAssets,Resources,Scenes,ScenesTests,Standard Assets,StreamingAssets" echo "Will link" CALL :LinkFiles "%filesToLink%" goto :eof :LinkFiles REM %1=Comma delimited string for /F "tokens=1* delims=," %%A in ("%~1") do ( echo. mklink /J "%repoDir%\Assets\%%A" "%cloudDir%\%%A" CALL :LinkFiles "%%B" ) goto :eof