假設我創建某些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 ..
我可以
rd /s /q withlink
刪除包含在外殼的符號鏈接的目錄中我也有同樣的任務在Perl腳本做我們目前使用cygwin'rm -rf'。不幸的是,我們使用的是cygwin 1.5,而rm和rm -rf在該版本中不能在我想要使用的符號鏈接上正常工作(they delete symbolic link contents instead of the symlinks)。
如果我嘗試:
use File::Path qw(rmtree) ;
rmtree(['withlink']) ;
這工作得很好,我提供沒有任何目錄的符號鏈接(如一個在創造最上面的鏈接序列REM生成的),然後Perl的rmtree最終會像cygwin一樣行事,我最終刪除了原始目錄中的目錄內容。
有沒有人有我可以使用的備用perl遞歸目錄刪除方法的建議。我想到的只是一個外殼標註:
system("rd /s /q withlink") ;
但這需要我測試平臺,並有不同的Windows和Unix的Perl代碼。
編輯: 請注意,與Unix不同,unlink()不能用於刪除目錄符號鏈接,至少在我們的構建系統當前使用的perl v5.6.0中是如此。但是,rmdir()確實可以刪除Windows目錄符號鏈接。
如果您嘗試....什麼? – 2012-03-01 18:32:03
對不起,在我還在問我的問題時,我稍微編輯了我的標題,並且過早地和無意地以不完整的狀態提交了問題。 – 2012-03-01 18:37:19
感謝您的更新! – 2012-03-01 18:43:19