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

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

    REGEXP_SUBSTR函数格式如下: function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier) __srcst ...

  2. git提交报错

    Error occurred computing Git commit diffsMissing unknown 0000000000000000000000000000000000000000 co ...

  3. 如何正大光明的使用 google 进行搜索

    对于程序猿来说,不能使用google,是一大痛所在,今天在使用 百度网盘 搜索时,突然发现 ,他能同时使用 baidu和 google进行搜索,于是想到了这个正大光明的使用google 的方法,不需要 ...

  4. 读书笔记——Windows环境下32位汇编语言程序设计(3)求复数模的子程序

    3.6.1.1中的例子 _Calc proc _dwX,_dwY local @dwResult finit fild _dwX fld st(0) fmul ;i*i fild _dwY fld s ...

  5. IE11的API变化

    IE11已经登录Win8.1,它的API有了很大变更 一.User-agent字符串的更改 IE10的是 Mozilla/5.0 (compatible; MSIE 10.0; Windows NT ...

  6. 01_传说中的车(Fabled Rooks UVa 11134 贪心问题)

    问题来源:刘汝佳<算法竞赛入门经典--训练指南> P81: 问题描述:你的任务是在n*n(1<=n<=5000)的棋盘上放n辆车,使得任意两辆车不相互攻击,且第i辆车在一个给定 ...

  7. 百度地图的简单使用 ——html js

    一.简介 百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,它能够帮助您在网站中构建功能丰富.交互性强的地图应用,包含了构建地图基本功能的各种接口,提供了诸如本地 ...

  8. linux进程间通信-XSI IPC

    一 什么是XSI IPC     有三种 IPC我们称作XSI IPC,即消息队列.信号量以及共享存储器(共享内存),它们之间有很多相似之处. 二 标识符和键     每个内核中的 IPC结构(消息队 ...

  9. jQuery 获取页面元素的属性值

    获取浏览器显示区域(可视区域)的高度 :    $(window).height();    获取浏览器显示区域(可视区域)的宽度 : $(window).width();    获取页面的文档高度 ...

  10. 这一路走来,冷暖自知 (附算法demos)

    最近半年多,除了“一键修图”算法之外我还做了其他什么算法? 1.实时单图HDR算法(颜色矫正,智能曝光) 2.多图曝光融合HDR算法(最高支持八百万像素左右) 3.模拟热能探测算法 4.防伪探测算法 ...