首先表明,这是一个悲伤的故事。  

  暑假来临,学校安排我们到某软件外包公司实习,想想不用面试也是蛮方便的,可以借此机会向大牛学习学习,虽然没有工资(据说学校还交了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');

  今后写代码还是多留心,多测试,最重要的还是不能太自信。

利用php实现文件迁移重命名的更多相关文章

  1. 利用Python对文件批量重命名

    由于要用到对无序的文件进行重命名,以下写了一个脚本,进行批量进行重命名. 基本格式是  i.后缀名 ( i  循环条件下的数 ) 1 #coding:utf8 2 import os; 3 4 def ...

  2. ASP FSO操作文件(复制文件、重命名文件、删除文件、替换字符串)

    ASP FSO操作文件(复制文件.重命名文件.删除文件.替换字符串)FSO的意思是FileSystemObject,即文件系统对象.FSO对象模型包含在Scripting 类型库 (Scrrun.Dl ...

  3. C#实现文件批量重命名源码下载

    本文要实现的功能是 文件批量重命名,当选择一个文件夹时,通过操作可以把文件夹下面所有文件进行重命名.建立了HoverTreeBatch项目. 然后 定义文件夹信息: DirectoryInfo _Th ...

  4. 当git上文件大小写重命名的修改时(git大小写敏感/默认不敏感),如何提交

    git默认是大小写不敏感!!! 加了感叹号是什么意思呢,意思就是这本身就是一个坑,本人使用的IDE是idea(网上说Eclipse可以避开问题),这个IDE本身就集成了git,但是如果要在termin ...

  5. 解决 win10 新建文件夹重命名卡死的另一种方法

    遇到 win10 新建文件夹重命名卡死时 根据网上的各种方法都不起作用时可以试一下这个方法. 文件夹属性 --- 自定义 --- 你想要那种文件夹 优化此文件夹 --- 把 [视频] 改成 [常规项目 ...

  6. Java实现文件批量重命名

    Windows操作系统可以实现重命名文件操作,却不能实现批量重命名.本实例实现了批量重命名功能,可以将一个文件夹内同一类型的文件按照一定的规则批量重命名.用户可以给出重命名模板,程序可以根据模板对相应 ...

  7. phpstorm如何进行文件或者文件夹重命名

    1.phpstorm的重构 1.1重命名 在phpstorm中,右键点击我们要进行修改的文件,然后又一项重构,我们就可以进行对文件的重命名. 接下来点击重命名进行文件或者文件夹的重新命名. 在框中输入 ...

  8. mac文件夹怎么重命名?苹果电脑文件夹重命名快捷键

    windows系统下给文件夹重命名相信很多朋友都很熟悉,那么Mac OS系统怎么给文件重命名呢,相信很多刚刚入手Mac OS系统的亲们都会有次疑问,下面小编告诉你Mac OS系统的文件夹到底要怎样才能 ...

  9. java IO 文件批量重命名

    java IO 文件批量重命名 package com.vfsd.renamefile; import java.io.File; import java.io.FileInputStream; im ...

随机推荐

  1. 比较全面的MySQL优化参考(上下篇)

    转自:http://imysql.com/2015/05/24/mysql-optimization-reference-1.shtml 本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨 ...

  2. 读书笔记——Windows核心编程(13)Windows内存体系结构

    对于32位进程(0x0000 0000~0xFFFF FFFF),有4GB的地址空间. 每个进程都有自己专有的地址空间,当进程的各个线程运行时,它们只能访问属于该进程的内存. 这4GB其实是虚拟地址空 ...

  3. solr 导入数据

    从sqlserver导入数据到solr, solr 采用的版本6.0.1,并且本机解压到:F:\Tool\solr-6.0.1: 1. 命令启动solr,创建core 启动,进入solr文件目录下,执 ...

  4. internet connection sharing has been disabled by the network administrator

    Start > Run > gpedit.msc Locate; Computer Configuration/Administrative Templates/Network/Netwo ...

  5. Fragment学习笔记

    Fragment为大量型号,尺寸,分辨率的设备提供了一种统一的UI优化方案.将Activity分解为多个Fragment,将极大地提高UI的灵活性,也更容易为一些新的设备配置带来更好的用户体验. on ...

  6. mysql sql获取上条插入id,update影响行数

    1.获取上条插入数据 LAST_INSERT_ID(); 2.获取update影响行数. ROW_COUNT(); mysql> UPDATE t -> SET address = 'be ...

  7. linux下对2个连通的串口读写遇到的问题

    想要分析下zmodem协议,搜索发现linux下的工具lrzsz是一个包含x,y,z modem传输的工具,下载其源码,下载.它可以借助各种串行的接口进行数据传输,比如串口,socket也可以,这点描 ...

  8. Storm之spout,bolt编写

    Storm,核心代码使用clojure书写,实用程序使用python开发,使用java开发拓扑. Nimbus节点接收到请求,对提交的拓扑进行分片,分成一个个的task,并将task和supervis ...

  9. codeforces 719E E. Sasha and Array(线段树)

    题目链接: E. Sasha and Array time limit per test 5 seconds memory limit per test 256 megabytes input sta ...

  10. HDU 5084 HeHe --找规律

    题意: 给出矩阵M,求M*M矩阵的r行c列的数,每个查询跟前一个查询的结果有关. 解法: 观察该矩阵得知,令ans = M*M,则 ans[x][y] = (n-1-x行的每个值)*(n-1+y列的每 ...