我正在尝试从power shell脚本执行一个进程:
$covFiles = Get-ChildItem -Name -Path .\ -Include Cov*.xml
for ($i=0; $i -lt $covFiles.Count; $i++) {
$covFile = $covFiles[$i]
$idx = $covFile.IndexOf("_")
$covPlatform = $covFile.SubString(3, 3)
$covFilter = $covPlatform + "_" + $covFile.SubString($idx + 1).TrimEnd(".xml")
$command = "-f " + $covFile + " -F " + $covFilter
& codecov $command
}
工作目录包含名为的文件,例如:
- CovEGLOpenGL.Net.Test_net461_x86_Release.xml
- CovWGLOpenGL.Net.CoreUI.Test_net461_x64_Release
...
如果我用& echo $command
回显命令,它在本地计算机上按预期工作。
但在AppVeyor上,流程输出:
codecov.exe : The filename, directory name, or volume label syntax is incorrect.
At line:8 char:3
+ & codecov $command
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (The filename, d...x is incorrect.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
FIND: Parameter format not correct
这让我觉得参数规范有问题。可以引用吗?
用codecov
替换echo
,本地输出:
-f CovEGLOpenGL.Net.CoreUI.Test_net461_x64_Release.xml -F EGL_net461_x64_Release
-f CovEGLOpenGL.Net.CoreUI.Test_net461_x86_Release.xml -F EGL_net461_x86_Release
-f CovEGLOpenGL.Net.Test_net35_x64_Release.xml -F EGL_net35_x64_Release
-f CovEGLOpenGL.Net.Test_net35_x86_Release.xml -F EGL_net35_x86_Release
-f CovEGLOpenGL.Net.Test_net461_x64_Release.xml -F EGL_net461_x64_Release
-f CovEGLOpenGL.Net.Test_net461_x86_Release.xml -F EGL_net461_x86_Release
-f CovWGLOpenGL.Net.CoreUI.Test_net461_AnyCPU_Release.xml -F WGL_net461_AnyCPU_Release
-f CovWGLOpenGL.Net.CoreUI.Test_net461_x64_Release.xml -F WGL_net461_x64_Release
-f CovWGLOpenGL.Net.CoreUI.Test_net461_x86_Release.xml -F WGL_net461_x86_Release
-f CovWGLOpenGL.Net.Test_net35_AnyCPU_Release.xml -F WGL_net35_AnyCPU_Release
-f CovWGLOpenGL.Net.Test_net35_x64_Release.xml -F WGL_net35_x64_Release
-f CovWGLOpenGL.Net.Test_net35_x86_Release.xml -F WGL_net35_x86_Release
-f CovWGLOpenGL.Net.Test_net461_AnyCPU_Release.xml -F WGL_net461_AnyCPU_Release
-f CovWGLOpenGL.Net.Test_net461_x64_Release.xml -F WGL_net461_x64_Release
-f CovWGLOpenGL.Net.Test_net461_x86_Release.xml -F WGL_net461_x86_Release
答案 0 :(得分:1)
这可以解决您遇到的问题:
$covFiles = Get-ChildItem -Filter cov*.xml
ForEach ($File in $covFiles)
{
$Path = $File.FullName
$idx = $Path.IndexOf("_")
$Platform = $Path.Substring(3, 3)
$Filter = "${Platform}_$($Path.Substring($idx+1).TrimEnd('.xml'))"
$ArgList = @(
'-f',"`"$Path`""
'-F',"`"$Filter`""
)
Start-Process -FilePath codecov -ArgumentList $ArgList
}
我怀疑你遇到的问题是由于相对路径造成的。