首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在WinCvs中的当前工作目录之外执行命令?

如何在WinCvs中的当前工作目录之外执行命令?
EN

Stack Overflow用户
提问于 2015-06-11 15:52:43
回答 2查看 915关注 0票数 1

我正在开发一个Perl包装器,以在WinCvs中执行命令。如果不对您希望执行命令的目录执行chdir,我就无法找到执行Cvs命令的方法。

这非常恼人,因为这意味着每当我想在perl脚本中处理Cvs时,我都需要获取当前的工作目录,将目录更改为Cvs路径,执行我的命令,然后将目录更改回原来的工作目录。

是否有方法将路径传递给Cvs命令,以便在当前不在的目录上发出命令?

例如,如果我的Perl脚本中的当前工作目录是C:\test\,并且我希望在C:\some_other_directory上执行Cvs update命令,那么我如何才能执行该命令而不首先对C:\some_other_directory执行chdir

当前如何执行命令的示例:

代码语言:javascript
复制
#!/usr/bin/perl
use strict;
use warnings;
use Cwd;

my $cwd = cwd();
chdir "C:\some_other_directory" or die $!;
system 'cvs update';
chdir $cwd or die $!;

我想要的是找到一种方法,能够将"C:\some_other_directory“直接传递给Cvs命令,并消除所有chdir的废话.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-18 13:33:49

Flavio的答案有效,但我也找到了这个替代的解决方案。它允许您更改目录以发出命令,但不像使用chdir那么危险,也不太可能让您对脚本在任何给定时间可能位于哪个目录感到困惑。

模块档案::Chdir可以很容易地解决这个问题:

代码语言:javascript
复制
use File::Chdir;

# Set the current working directory
$CWD = '/foo/bar/baz';

# Locally scope this section
{
    local $CWD = '/some/other/directory';

    # Updates /some/other/directory
    system 'cvs update';
}

# current working directory is still /foo/bar/baz
票数 3
EN

Stack Overflow用户

发布于 2015-06-11 21:28:50

另一种方法是在一个系统调用中调用多个命令:

代码语言:javascript
复制
system("cd C:\some_other_directory && cvs update");
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30785657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档