はのように、私はいくつかのWindowsシンボリックリンクを作成するとします。perlスクリプトのWindowsシンボリックリンクを削除しますか?
rd /s /q source withlink linkdir
mkdir source
mkdir withlink
echo blah > source/myfile
cd withlink
touch blah
mklink mylink ..\source\myfile
@REM mklink /d linkdir ..\source
cd ..
私はperlスクリプトで行うには、同じタスクを持っている
rd /s /q withlink
とシェルでシンボリックリンクを含むディレクトリを削除することができます現在Cygwinのrm -rfを使用しています。残念ながら私たちはcygwin 1.5を使用していますが、rmとrm -rfは、使用したいシンボリックリンク上でそのバージョンで正しく動作しません(they delete symbolic link contents instead of the symlinks)。私は、その後のperlの、(上記作成-リンクを順番に出しREM'ed 1のような)任意のディレクトリのシンボリックリンクを持っていない提供
use File::Path qw(rmtree) ;
rmtree(['withlink']) ;
これはうまく動作します、:
私がしようとした場合rmtreeはcygwinのように動作し、元のディレクトリのディレクトリ内容が削除されてしまいます。
誰でも私が使用できる代替のperl再帰的なディレクトリ削除方法の提案をしていますか?私はシェルコールアウトを考えた:
system("rd /s /q withlink") ;
が、これは私がプラットフォームをテストし、WindowsとUnixのためのさまざまなPerlコードを持っている必要があり。
EDIT: Unixとは違って、unlink()は少なくともビルドシステムが現在使用しているperl v5.6.0のディレクトリシンボリックリンクを削除するようには機能しません。しかし、rmdir()はWindowsディレクトリのシンボリックリンクを削除するために動作します。
試してみたら....何ですか? –
申し訳ありませんが、私はまだ私の質問をしている間に私のタイトルを少し編集し、不完全な状態で途中で質問を誤って提出しました。 –
ありがとうございました! –