Windows 用空格解析字符串列表
我对bash脚本还比较陌生,这让我非常头疼。我已经想出了一些解决办法,但它们都非常肮脏 我的目标是使用以下代码自动创建一组符号链接:Windows 用空格解析字符串列表,windows,batch-file,command-line,Windows,Batch File,Command Line,我对bash脚本还比较陌生,这让我非常头疼。我已经想出了一些解决办法,但它们都非常肮脏 我的目标是使用以下代码自动创建一组符号链接: set repoDir=C:\aRandomPath set cloudDir=C:\AnotherRandomPath set filesToLink=(FMODAssets,Resources,Scenes,ScenesTests,Standard Assets,StreamingAssets) @echo off ECHO "Will link" fo
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"
)
不幸的是,这样做的副作用是将“标准资产”解析为两个字符串:“标准”和“资产”。解决这个问题的可接受的方法是什么?这样就可以了。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
从
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”…
每个“quoted元素”依次分配给%%A
,~
操作符删除引号