哪种“符号链接”? ;-)
哦,并读取符号链接维基百科的文章上面的mklink
命令;-) Back-ticks (or system)可以是一个很好的朋友,但要注意:
的默认安全Windows Vista/Windows 7中的设置不允许未升级的管理员和所有非管理员创建符号链接。此行为可以[通过安全策略设置]更改....
快乐编码。
WinAPI CreateSymbolicLink函数可以直接使用;我不确定它是否“受到”与上面的mklink
命令相同的限制。但是,this thread表示它仍然有效。
FWIW,这个“工程”在草莓Perl 5.12中。因人而异,我刚才输入这件事,从来没有使用过它,否则:-)
use Win32::API;
$fn = Win32::API->new(
# Note "A" function, IDK how to use Unicdoe
"kernel32", "BOOLEAN CreateSymbolicLinkA(LPTSTR lpSymlinkFileName, LPTSTR lpTargetFileName, DWORD flags)"
);
unlink("src.txt");
unlink("lnk.txt");
open(FH,">src.txt") or die $!;
close(FH);
print "src.txt exists? " , (-f "src.txt"), "\n";
print "lnk.txt exists? " , (-f "lnk.txt"), "\n";
$hr = $fn->Call("lnk.txt", "src.txt", 0);
print "Result: ", $hr, "\n";
print "lnk.txt exists? ", (-f "lnk.txt"), "\n";
open(FH,">>src.txt") or die $!;
print FH "hello world!\n";
close(FH);
open(FH,"<lnk.txt") or die $!;
print "linked data: ", scalar(<FH>), "\n";
close(FH);
我的结果(RAN为“管理员” - 可能不适用于“其他用户”工作 - 我不知道为什么,但我CMD.EXE总是与提升的权限)打开:
src.txt exists? 1
lnk.txt exists?
Result:
lnk.txt exists? 1
linked data: hello world!
目录列表:
10/22/2011 02:53 PM <DIR> .
10/22/2011 02:53 PM <DIR> ..
10/22/2011 02:54 PM 636 foo.pl
10/22/2011 02:53 PM <SYMLINK> lnk.txt [src.txt]
10/22/2011 02:53 PM 14 src.txt
我不知道是什么[细微]的差异有可能是,如果有的话,在NTFS符号链接和“UNIX”符号链接之间。此外,上述将无法工作 pre-Vista/2008 - 以前版本的NTFS 不支持符号链接(并且以前版本的Windows没有CreateSymbolicLink
函数)。
谷歌搜索'窗口符号链接perl'返回很多很多的这方面的信息。简而言之,就是没有像windows中* nix那样的“符号链接”。 perl文档告诉你,如果底层操作系统不支持符号链接,'symlink'将失败。 –
@Brian Roach当然,在过去的5年中发布的windows版本中......-) – 2011-10-22 21:14:00
@pst - 注意“就像在* nix中”一样。他们...不一样。你会认为activestate会做一些事情而不是失败,但他们不会。 –