我是bash脚本的新手,这让人头疼。我想出了一些解决方案,但它们都非常脏......
我的目标是使用以下代码自动创建一堆符号链接:
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"
)
不幸的是,这会产生将“标准资产”解析为2个字符串的副作用:“标准”和“资产”。解决这个问题的可接受方法是什么?
答案 0 :(得分:1)
这应该这样做。 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
答案 1 :(得分:1)
从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
,~
运算符会删除引号。