作者timothyptt (Tim)
看板Perl
標題[請益] 搬資料夾的問題
時間Mon Mar 14 16:29:33 2011
有一小段程式如下,主要的目地,是要判斷A資料夾裡的資料夾
若為ABC則搬到B資料夾裡的ABC資料夾
若為DEF則搬到B資料夾裡的DEF資料夾
但是在執行的時候,一開始就直接把"A"資料夾搬到"B"資料夾了
似乎是因為DIR會將"."與".."這兩個也算進去
所以就會先搬走自己的資料夾
請問有什麼方法可以避免呢,又或著是我的方法錯了呢?
執行的環境是Windows的Dos,用Batch去跑的
再有另一個問題,如果要將">>"這個字串寫到文字檔裡有什麼方法呢?
之前有試過aaa>>bbb >>abc.txt,這樣是不行的,還是有別的寫法呢?
(這樣說明不知道各位前輩能不能看懂,小弟不太會表達)
程式碼如下:
#bin/prel
use File::stat;
use File::Copy;
$Apath=@ARGV[0];
$Bpath=@ARGV[1];
#errorpath=空表的位置
#emptypath=存放空表的位置
opendir(DIR, $Apath);
@files = sort readdir(DIR);
closedir(DIR);
foreach $file1 (@files)
{
$str = (substr $file1, 5, 3);
if ($str == "ABC")
{
system("move $Apath\\$file1, $Bpath\\$str\\");
}
elsif ($str == "DEF")
{
system("move $Apath\\$file1, $Bpath\\$str\\");
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 112.78.78.122
※ 編輯: timothyptt 來自: 112.78.78.122 (03/14 16:45)
1F:推 imce:在foreach裡面加一行next if ($file1 =~/^\./); 03/14 19:23
2F:→ timothyptt:謝謝樓上大師...看起來像是正常執行了...謝謝 03/14 20:52
3F:→ timothyptt:可以請問一下,這裡面的內容是什麼意思呢? 03/15 09:56
4F:推 abliou:開頭是.的檔名 03/15 12:48
5F:→ imce:開頭是.的,可以過濾掉.和..兩個,不然你寫在if裡面也可以 03/15 13:52
6F:→ timothyptt:謝謝大師們的回答:)謝謝 03/15 20:19