Ale*_*gor 14 svn powershell cmd visualsvn-server
我有以下PowerShell脚本来验证我的SVN存储库:
$SVNAdminDir = 'C:\Program Files (x86)\VisualSVN Server\bin';
$RepositoryDir = 'C:\My Repositories\App1';
$_cmd = "`"$SVNAdminDir`\svnadmin`" verify `"$RepositoryDir`"";
Write-Host $_cmd; # Copying this into the command prompt runs without an issue...
cmd.exe /c $_cmd; # It's when I try to execute the command from PS that I get the error.
Run Code Online (Sandbox Code Playgroud)
但是当我尝试执行它时,我收到以下错误消息:
cmd.exe : 'C:\Program' is not recognized as an internal or external command,
At line:5 char:12
+ cmd.exe <<<< /c $_cmd;
+ CategoryInfo : NotSpecified: ('C:\Program' is...ternal command,:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)
由于我基本上$cmd = '"C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" verify "C:\My Repositories\App1"';使用单引号内的双引号进行设置,因此我希望正确传递C:\ Program Files(x86)\ ...中的空格.
我怀疑我错过的字符串有些微不足道......
Joe*_*ant 17
你需要cmd.exe像这样打电话:
cmd.exe /c "`"$_cmd`""
Run Code Online (Sandbox Code Playgroud)
您发送到的命令cmd.exe需要完全包装在它们自己的引号中,而不仅仅是作为这些命令的一部分的空格路径.这与Powershell如何解析字符串有关,它需要传递文字引号,cmd.exe以便它自己正确地解析双引号的内容.
例如,如果您已经在cmd.exe会话中并设置了如下变量:
C:\>set _cmd="C:\Program Files (x86)\VisualSVN Server\bin\svnadmin" verify "C:\My Repositories\App1"
Run Code Online (Sandbox Code Playgroud)
然后只需在命令行扩展该变量即可:
C:\>%_cmd%
Run Code Online (Sandbox Code Playgroud)
但是,如果将其传递给新cmd.exe会话,则还需要额外的引号:
C:\>cmd.exe /c "%_cmd%"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23353 次 |
| 最近记录: |