提取文件夹里更新过的文件
很多时候,帮别人修改后的项目代码,只想把更新的文件发给别人。如果一个一个的文件去找,很麻烦。这里我写了一个php文件,可以把文件夹里更新过的文件,复制到同级别的另一个文件夹下。
<?php
date_default_timezone_set('Asia/Shanghai');
$src_dir = 'C:/dev/nginx/html/xctj';
echo_msg('源目录:' . $src_dir);
$dist_dir = pathinfo($src_dir, PATHINFO_DIRNAME) . '/' . pathinfo($src_dir, PATHINFO_BASENAME) . '-' . date('YmdHis');
echo_msg('保存目录:' . $dist_dir);
// 开始修改时间
$start_time = strtotime('2024-03-21 15:07:00');
copy_update($src_dir);
function copy_update($dir)
{
global $start_time, $src_dir, $dist_dir;
$files = scandir($dir);
foreach ($files as $file) {
echo_msg($file);
if ($file == '.' || $file == '..') {
continue;
}
$f = $dir . '/' . $file;
if (preg_match('/\.idea/i', $f)) {
continue;
}
if (is_dir($f)) {
copy_update($f);
} else {
$update_time = filemtime($f);
if ($update_time >= $start_time) {
$d = $dist_dir . '/' .trim( str_replace($src_dir, '', $f),'/');
createDirByFile($d);
if (copy($f, $d)) {
echo_msg('复制成功:' . $d);
} else {
echo_msg('复制失败:' . $d);
}
}
}
}
}
function echo_msg($msg)
{
echo $msg . PHP_EOL;
}
/**
* 通过给定的文件创建目录
* @param string $file 文件路径
* @return bool
*/
function createDirByFile($file)
{
if (file_exists($file)) {
return true;
}
$dirname = pathinfo($file, PATHINFO_DIRNAME);
return createDir($dirname);
}
/**
* 创建文件夹
* @param string $dir
* @return bool
*/
function createDir($dir)
{
if (!is_dir($dir)) {
return mkdir($dir, 0777, true);
}
return true;
}
使用的时候,需要修改以下几个地方:
需要提取哪个文件夹下修改过后的文件
$src_dir = 'C:/dev/nginx/html/xctj';
从哪个时间开始提取
$start_time = strtotime('2024-03-21 15:07:00');
修改完后,可以在黑窗口cmd下运行php文件即可。