如何批量替换相对地址为绝对地址(利用bat批处理实现)

如果你的url链接是相对路径“static/mapi.css”,你想把他批量替换成绝对路径“http://dev.baidu.com/wiki/static/map/cloud/static/mapi.css”。那么,你可以这样做:

写一个PHP文件,把需要替换的网址写进去。
这个代码的意思就是,把#BASE_URL#替换成 http://api.map.baidu.com/lbsapi/cloud/ 。
这句话的意思是,把resource文件里的内容替换一遍,然后放到cloud文件夹里。FileUtil::copyDir("resource","cloud",true);


代码如下:

<?php
//需要替换的关键字
$GLOBALS["patterns"] = array(
"/#BASE_URL#/"
);
//替换后的内容,和上面的匹配规则一一对应
$GLOBALS["replacements"] = array(
"http://api.map.baidu.com/lbsapi/cloud/"
//"http://172.22.168.178/lbsapi/"
//"http://dev.baidu.com/wiki/static/map/cloud/"
);
/**
* 操纵文件类
*
* 例子:
* FileUtil::copyDir('b','d/e'); 测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去
* FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件 建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去
* FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹
* FileUtil::unlinkFile('b/d/3.exe'); 测试删除文件 删除b/d/3.exe文件
*/
class FileUtil {
/**
* 建立文件夹
*
* @param string $aimUrl
* @return viod
*/
function createDir($aimUrl) {
$aimUrl = str_replace('', '/', $aimUrl);
$aimDir = '';
$arr = explode('/', $aimUrl);
foreach ($arr as $str) {
$aimDir .= $str . '/';
if (!file_exists($aimDir)) {
mkdir($aimDir);
}
}
}
/**
* 删除文件
*
* @param string $aimUrl
* @return boolean
*/
function unlinkFile($aimUrl) {
if (file_exists($aimUrl)) {
unlink($aimUrl);
return true;
} else {
return false;
}
}
/**
* 复制文件夹
*
* @param string $oldDir
* @param string $aimDir
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
function copyDir($oldDir, $aimDir, $overWrite = false) {
$aimDir = str_replace('', '/', $aimDir);
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/';
$oldDir = str_replace('', '/', $oldDir);
$oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/';
if (!is_dir($oldDir)) {
return false;
}
if (!file_exists($aimDir)) {
FileUtil::createDir($aimDir);
}
$dirHandle = opendir($oldDir);
while(false !== ($file = readdir($dirHandle))) {
if ($file == '.' || $file == '..') {
continue;
}
if (!is_dir($oldDir . $file)) {
FileUtil::copyFile($oldDir . $file, $aimDir . $file, $overWrite);
} else {
FileUtil::copyDir($oldDir . $file, $aimDir . $file, $overWrite);
}
}
return closedir($dirHandle);
}
/**
* 复制文件
*
* @param string $fileUrl
* @param string $aimUrl
* @param boolean $overWrite 该参数控制是否覆盖原文件
* @return boolean
*/
function copyFile($fileUrl, $aimUrl, $overWrite = false) {
if (!file_exists($fileUrl)) {
return false;
}
if (file_exists($aimUrl) && $overWrite == false) {
return false;
} elseif (file_exists($aimUrl) && $overWrite == true) {
FileUtil::unlinkFile($aimUrl);
}
$aimDir = dirname($aimUrl);
FileUtil::createDir($aimDir);
copy($fileUrl, $aimUrl);
//替换变量
$apiFilePointer = fopen($aimUrl, 'r');
$apiFileContent = fread($apiFilePointer, filesize($aimUrl));
//只在js、html、css文件进行替换
if (preg_match('/(\.js|\.html|\.css|\.htm)$/', $aimUrl)) {
$apiFileContent = preg_replace($GLOBALS["patterns"], $GLOBALS["replacements"], $apiFileContent);
}
fclose($apiFilePointer);
echo $aimUrl."\r\n";
$apiFilePointer = fopen($aimUrl, 'w+');
fwrite($apiFilePointer, $apiFileContent);
fclose($apiFilePointer);
//替换变量
return true;
}
}
FileUtil::copyDir("resource","cloud",true);
?>

再写一个bat批处理文件,来运行这个PHP。
php release.php
现在,只需点击bat文件,全部页面里的相对地址就会变成绝对地址了。

(0)

相关推荐

  • JavaScript将相对地址转换为绝对地址示例代码

    在看LABjs源代码时,发现里面有个将相对地址转为绝对地址的函数,将其拿出纪录如下: 复制代码 代码如下: function canonical_uri(src, base_path) { var root_page = /^[^?#]*\//.exec(location.href)[0], root_domain = /^\w+\:\/\/\/?[^\/]+/.exec(root_page)[0], absolute_regex = /^\w+\:\/\//; // is `src` is p

  • FormatRemoteUrl函数之asp实现格式化成当前网站完整的URL-将相对地址转换为绝对地址的代码

    '================================================ '函数名:FormatRemoteUrl '作  用:格式化成当前网站完整的URL-将相对地址转换为绝对地址 '参  数: url ----Url字符串 '参  数: CurrentUrl ----当然网站URL '返回值:格式化取后的Url '================================================     Public Function FormatRe

  • DefiniteUrl asp将相对地址转换为绝对地址的代码

    '================================================== '函数名:DefiniteUrl '作  用:将相对地址转换为绝对地址 '参  数:PrimitiveUrl ------要转换的相对地址 '参  数:ConsultUrl ------当前网页地址 '================================================== Function DefiniteUrl(Byval PrimitiveUrl,Byval 

  • 如何批量替换相对地址为绝对地址(利用bat批处理实现)

    如果你的url链接是相对路径"static/mapi.css",你想把他批量替换成绝对路径"http://dev.baidu.com/wiki/static/map/cloud/static/mapi.css".那么,你可以这样做: 写一个PHP文件,把需要替换的网址写进去. 这个代码的意思就是,把#BASE_URL#替换成 http://api.map.baidu.com/lbsapi/cloud/ . 这句话的意思是,把resource文件里的内容替换一遍,然后

  • 利用bat批处理程序通过DOS命令行删除所有的空文件夹的方法

    用过gothub或者码云的同学都知道,不包含任何文件的空文件夹上传提交时不被允许的.当然你可以在空文件下创建.keep文件(或.gitkeep文件),然后就可以上传了. 但是如果空文件夹比较多,并且我们确实不需要这些空文件了,那本文就学习一种命令行删除所有空文件夹的方法.并封装成.bat批处理程序.通过鼠标右键运行即可. 一,DOS删除命令 1.1,删除文件命令 del 若是想删除文件,输入del 盘符名:\文件名,比如,我想删除一个在F盘的名为123.txt的文件,则输入  del f:\12

  • bat批处理之字符串操作的实现

    目录 对于字符串的截取 字符串的替换 字符串合并 字符串查找 bat批处理代码 通常情况下,任何一种语言对于字符串的操作都是重中之重.这里稍微介绍下bat批处理中对于字符串的操作. 对于字符串的截取 set testStr=abcdefghijklmnopqrstuvwxyz0123456789 echo 原始字符串 %testStr% echo 提取前五个字符串:%testStr:~0,5% echo 提取最后五个字符串:%testStr:~-5% echo 提取第一个到倒数第六个字符串:%t

  • Win10利用bat文件实现文件与文件夹批量重命名的实践

    目录 bat文件 批量重命名文件夹 批量重命名文件 后记 bat文件 利用Win10的bat文件能够实现垃圾清理.电脑关机等.同样的,使用Win的bat文件能够实现文件与文件夹的批量重命名,这样就免去了通过写一个脚本,或者代码程序来运行.做这个的初衷是在处理深度学习的数据集时,为了增加可识别性,将每一个图片文件重命名,特以博客以记之.参考网上的一些方式以及自己的试坑,最终总结如下. 批量重命名文件夹 在示例中我创建了1005个文件夹,如下图所示 bat文件代码如下,其中第五行是命名,!a!是一个

  • Access中批量替换数据库内容的两种方法

    今天遇到一个问题,一Access数据库中存放着N条文章记录,现在想替换掉这些文章中的部分内容,我们首先想到的是到网站后台去一条一条修改文章,那如果有1000篇文章,那就在网站后台改1000次,难以想象这是什么样的工作量.其实在Access数据库中可以利用SQL语句来批量替换内容,只需一句话就能解决问题,下面通过两种方法来解决此问题. 方法一:通过Access数据库中的查询分析器来修改(这里我使用的是Access 2003) 1.打开需要修改的Access数据库 2.在数据库"对象"中点

  • [Perl]文字/代码批量替换工具

    Perl脚本batchReplace.pl可以用来批量替换文件中的文字/代码.可在指定目录中查找指定类型的文件,并递归检查子目录:在输出文件时复制输入文件的目录结构. [附件]Win32应用程序batchReplace.exe是由Perl脚本编译产生的可执行程序,不需安装Perl运行环境即可执行. 在命令行中使用 batchReplace.exe[ -i 输入文件路径(或包含文件的目录)][ -o 输出文件位置(文件或目录)][ -c 批量输入文件的扩展名,以"."开始,多个扩展名之间

  • Python脚本操作Excel实现批量替换功能

    大家好,给大家分享下如何使用Python脚本操作Excel实现批量替换. 使用的工具 Openpyxl,一个处理excel的python库,处理excel,其实针对的就是WorkBook,Sheet,Cell这三个最根本的元素~ 明确需求原始excel如下 我们的目标是把下面excel工作表的sheet1表页A列的内容"替换我吧"批量替换为B列的"我用来替换的x号选手" 实现替换后的效果图,C列为B列替换A列的指定内容后的结果 实现以上功能的同时,我也实现excel

  • SqlServer中批量替换被插入的木马记录

    最近找了找 批量替换被插入的木马记录,找到了一条好的语句,用处很大,仅仅使用十几行游标语句,把整个数据库的所有表的恶 意木马清除掉了,而且在Google搜索到此记录几率很小,在此专门转载一下!为了以后自己能找得到,也希望后人能得到帮助. 原文如下: 复制代码 代码如下: declare @t varchar(555),@c varchar(555) ,@inScript varchar(8000) set @inScript='恶意代码' declare table_cursor cursor

  • MSSQL批量替换语句 在SQL SERVER中批量替换字符串的方法

    方法一:(这种是最常用的,因为很多大段的内容都使用text ntext等数据类型,而我们通常也是替换里面的内容) varchar和nvarchar类型是支持replace,所以如果你的text不超过8000可以先转换成前面两种类型再使用replace 替换 text ntext 数据类型字段的语句 复制代码 代码如下: update 表名 set 字段名=replace(cast(与前面一样的字段名 as varchar(8000)) ,'原本内容','想要替换成什么') 方法二:(替换其他数据

  • 利用BAT脚本加入域和退出域的代码

    利用BAT脚本加入域和退出域 加入域的脚本: @echo off netdom join %computername% /domain:test.com /UserD:user /PasswordD:pass /REBoot:5 退出域的脚本: @echo off netdom remove %computername% /domain:test.com /UserD:user /PasswordD:pass /REBoot:5 上面两个批处理脚本是通过调用xp support tools 里面

随机推荐