从 Windows cmd.exe 更改 Perl 目录
根据手册,chdir,将工作目录更改为EXPR
,如果可能的话。
从 cmd.exe 执行此脚本时:
my $path = 'C:\\some\\path\\';
print "$path\n";
chdir("$path") or die "fail $!";
会产生以下输出:
C:\some\path\
但是当我返回到命令提示符时 - 我仍然位于原始目录中。我是否误解了 chdir 的目的?
According to the manual, chdir, Changes the working directory to EXPR
, if possible.
This script, when executed from cmd.exe:
my $path = 'C:\\some\\path\\';
print "$path\n";
chdir("$path") or die "fail $!";
results in this output:
C:\some\path\
but when I am returned to the command prompt - I'm still at the original directory. Am I misunderstanding the purpose of chdir?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请参阅常见问题解答我 {在 perl 脚本中更改了目录,修改了我的环境}。为什么当我退出脚本时更改就消失了?如何让我的更改可见?
同样的答案也适用于 Windows。
您可以通过修改快捷方式和/或注册表来修改后续 cmd.exe 调用或子进程的起始目录。
See the FAQ I {changed directory, modified my environment} in a perl script. How come the change disappeared when I exited the script? How do I get my changes to be visible?
The same answer applies to Windows as well.
You can modify the starting directory of subsequent
cmd.exe
invocations, or of child processes by messing with shortcuts and/or the registry.当 shell 运行一个程序时,它本质上是分叉然后执行该程序——在本例中是您的 perl 脚本。该分叉进程中的目录已更改,然后该进程就会终止。然后您将返回到原始 shell 进程。
When a shell runs a program, it essentially forks then execs the program -- in this case, your perl script. The directory within that forked process has been changed, and then that process dies. You're then returned to the original shell process.
我通过使用 perl
-x
开关来执行嵌入在文件中的 Perl 代码来更改目录和命令环境。BatchTool
是一个将 DOS 命令写入$ENV{TMPBAT}
的模块,如果 1) 它不存在或 2) 早于源脚本。I have changing directories and command environments by using the perl
-x
switch to execute Perl code in embedded in a file.BatchTool
is a module that writes DOS commands to$ENV{TMPBAT}
if 1) it doesn't exist or 2) is older than the source script.