利用php實現文件遷移重命名

  首先代表,這是一個悲傷的故事。  php

  暑假來臨,學校安排咱們到某軟件外包公司實習,想一想不用面試也是蠻方便的,能夠藉此機會向大牛學習學習,雖然沒有工資(聽說學校還交了600塊的保險),但想一想仍是蠻期待的,但真正到公司就懵逼了~技術人員都不在好很差!職位都安排好了,什麼人力資源,經營管理,還有財務管理之類,作培訓的,但沒有一個寫代碼的啊!程序員

  我被分到了經營管理部門,天天接觸的是各類合同審批,合同掃描,合同蓋章,合同...  總之圍着合同團團轉,打雜遠遠多於學習。想一想若是沒有咱們那些公司的人也要處理如此重複無聊的工做,真是讓我對工做有點抗拒了。面試

  不閒扯了,我遇到了這麼一個問題。公司合同文本在存檔前都要掃描到計算機上而後上傳到公司系統。 全部掃描完的合同都存在一個文件夾裏,當初掃描時爲了方便統一命名爲windows

"CD+年份+月份+合同編號.pdf";例如15年7月的第10份合同命名爲「CD1507010.pdf」。每月合同大概有300份左右。爲了上傳到系統,有兩種方法,一種是一份一份上傳到系統,一種是在本地重命名好打包發送到系統。 手工操做的話,不管哪種都耗時在一個小時以上。如此重複無聊的工做,簡直讓人奔潰。對於第一種方法,因爲不瞭解系統,我沒有作更多深究,我着重考慮第二種方法。在本地重命名規則是將原來的pdf文件放置在"文件名+C"的文件夾下,而且重命名爲HTWB.pdf服務器

  本着重複工做盡可能交給計算機去作的原則,我考慮用本身所學的php語言來解決問題。(不知道其餘語言是否更加高效,但這明顯要比純手工更高效)。函數

  公司電腦配置爲win7系統,雖然說是一家軟件公司,可是非研發部門的計算機水平和通常公司的無異。考慮到操做人員的計算機相關知識,也考慮到實現的便捷性,我沒有安裝Apache服務器甚至也沒有啓動Windows自帶的IIS,直接利用命令行進行操做。學習

  名爲htzy.php的腳本以下:測試

<?php 

$path=dirname(__FILE__);
$handle=opendir($path);

while (!($item=readdir($handle))==false) {
    if ($item!='.'&&$item!='..'&&$item!='htzy.php') {

        $arr=explode('.', $item);
        $dirname=$arr[0].'C';
        mkdir($path.'/'.$dirname);
        rename($path.'/'.$item,$path.'/'.$dirname.'/HTWB.pdf' );
    }
}

unlink('./htzy.php');
 ?>

  將此文件放置在要處理的文件夾下,在文件夾打開命令行窗口,輸入  spa

      php -f htzy.php

   稍等幾秒就好。  命令行

       簡單利用  mkdir()  rename()函數完成文件轉移,最後利用unlink刪除腳本,因此,要重複利用此腳本的話須要保存好它~

 

   至此,文件遷移重命名完成。

    

  後記:今天利用本方法在公司電腦上進行文件遷移時發生了灰常尷尬的一幕:不只沒有完成預約任務,還頻頻報錯,等我再細細察看,發現真正發生遷移的是操做文件夾的上的好幾層目錄。 結果是可想而知的,如此一來將上幾層 的某個目錄下的文件文件夾進行了遷移重命名!!!萬幸的是沒有破壞太多的有價值的文檔,也能夠手工回覆。

  做爲一個程序員必然不能容忍程序的此種背叛。 通過我細細察看,發現dirname(__FILE__)生成的居然是實際操做了的那個文件夾。經過屢次測試,發如今windows下漢字字符直接亂碼,後面的部分被忽略掉了。好比C:\Users\Administrator\Desktop\桌面 這個路徑經過dirname(__FILE__)生成的居然是C:\Users\Administrator\Desktop,爲了不這種狀況,將原來代碼$path=dirname(__FILE__);調整爲$path=dirname('./htzy.php');

  從此寫代碼仍是多留心,多測試,最重要的仍是不能太自信。

相關文章
相關標籤/搜索