如何解决Perl如何将带有空格的文件路径传递给反引号
我正在尝试使用反引号(包含空格的文件路径)调用svn update。
$folder = "D:\\Projects\\Development_SVN\\Project Hay\\Release\\Branches\\R2.3\\";
updateFolder($folder);
sub UpdateFolder {
my $SVNPath = $_[0];
&main::logWriteAndPrint(" Updating $SVNPath (using backticks)\n");
my $svnCmd = 'svn up --set-depth infinity '.'\''.$SVNPath.'\'';
my $svnResp = `$svnCmd 2>&1`;
# this works
# my $svnResp = `svn up --set-depth infinity "D:\\Projects\\Development_SVN\\Project Hay\\Release\\Branches\\R2.3" 2>&1`;
}
这不能使用空格:
my $svnCmd = 'svn up --set-depth infinity '."$SVNPath";
my $svnResp = `$svnCmd 2>&1`;
但有空格则返回:
Updating 'D:\Projects\Development_SVN\Project':
At revision 20938.
Skipped 'Hay\Release\Branches\R2.3'
Summary of updates:
Updated 'D:\Projects\Development_SVN\Project' to r20938.
Summary of conflicts:
Skipped paths: 1
我尝试使用双引号,单引号,转义字符,但无法正确处理。
我认为结尾的斜杠没有帮助,但我也尝试将其删除。
谢谢
编辑-带有命令行示例:
C:> svn up --set-depth infinity D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3 更新'D:\ Projects \ Development_SVN \ Project': 修订版20950。 跳过“干草\发布\分支\ R2.3” 更新摘要: 将“ D:\ Projects \ Development_SVN \ Project”更新为r20950。 冲突摘要: 跳过的路径:1
C:> svn up --set-depth infinity“ D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3” 更新'D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3': 修订版为20950。
C:> svn up --set-depth infinity“ D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3 \” svn:E020024:“ D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3“的错误解决案例
C:> svn up --set-depth infinity'D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3' svn:E020024:解决“ D:\ Projects \ Development_SVN \ Project”的情况
C:> svn up --set-depth infinity'D:\ Projects \ Development_SVN \ Project Hay \ Release \ Branches \ R2.3 \' svn:E020024:解决“ D:\ Projects \ Development_SVN \ Project”的情况
解决方法
感谢您的指导。这是我需要做的:
my $folder = "D:\\Projects\\Development_SVN\\Project Hay\\Release\\Branches\\R2.3\\";
UpdateFolder($folder);
sub UpdateFolder {
my $SVNPath = $_[0];
$SVNPath =~ s{(.+)\\\z}{\1};
my $svnCmd = 'svn up --set-depth infinity';
my $svnResp = `$svnCmd "$SVNPath" 2>&1`;
if ($svnResp)
{
&main::logWriteAndPrint($svnResp);
}
}
产生的输出:
Updating 'D:\\Projects\Development_SVN\Project Hay\Release\Branches\R2.3':
At revision 20940.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。