Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 用空格解析字符串列表_Windows_Batch File_Command Line - Fatal编程技术网

Windows 用空格解析字符串列表

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

我对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" 
)

不幸的是,这样做的副作用是将“标准资产”解析为两个字符串:“标准”和“资产”。解决这个问题的可接受的方法是什么?

这样就可以了。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
~
操作符删除引号