首先表明,這是一個悲傷的故事。
暑假來臨,學校安排我們到某軟件外包公司實習,想想不用面試也是蠻方便的,可以借此機會向大牛學習學習,雖然沒有工資(據說學校還交了600塊的保險),但想想還是蠻期待的,但真正到公司就懵逼了~技術人員都不在好不好!職位都安排好了,什么人力資源,經營管理,還有財務管理之類,做培訓的,但沒有一個寫代碼的啊!
我被分到了經營管理部門,每天接觸的是各種合同審批,合同掃描,合同蓋章,合同... 總之圍着合同團團轉,打雜遠遠多於學習。想想如果沒有我們那些公司的人也要處理如此重復無聊的工作,真是讓我對工作有點抗拒了。
不閑扯了,我遇到了這么一個問題。公司合同文本在存檔前都要掃描到計算機上然后上傳到公司系統。 所有掃描完的合同都存在一個文件夾里,當初掃描時為了方便統一命名為
"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'); ?>
將此文件放置在要處理的文件夾下,在文件夾打開命令行窗口,輸入
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');
今后寫代碼還是多留心,多測試,最重要的還是不能太自信。