![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-06 17:52 |
共 48,039 主题排行 / 350,124 发帖 / 今日 0 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 求-改文件名并替换文本内容(多文件,多级文件夹) |
| 可打印版本 1,273 / 8 |
| 第1楼 feelnow | 发表于 2007-10-18 11:22 |
| 新手上路 发帖 4 积分 12 | |
|
求-改文件名并替换文本内容(多文件,多级文件夹) 最近在整理文章时碰到一个难题:
前因: 1. 主文件夹 html 下有很多文件以及很多下级文件夹,文件名形式为"aa.php" 或 "aa.bb.php" ------------------ 2. 文件内容中包含有文件名(例:aa.php 中有内容为"aa.bb.php") ============ 需求: 把 html 以及下级(包括下下级)文件夹中的所有文件名 aa.bb.php --> aa_bb.php aa.cc.php --> aa_cc.php xx.xx.php --> xx_xx.php(也就是说把第一的点替换为 _ ) aa.php (这样的就不用改名) ----------------- 把 html 以及下级(包括下下级)文件夹中的所有文件内容包含 例如 aa.php 内容包含 "aa.bb.php" ---> "aa_bb.php" ============ 思路: 1.改名: 先把所有文件名包含两个点的生成一个文件 "name1.txt" (不知道怎么判断文件名是一个点还是两个点) 把所有文件名中的 ".php" 先改成 "-php" 然后再把文件名中的 " . " 改成 " _ " 再把 "-php" 改成 " .php" ****不知这样才能自动循环所有下级文件夹**** --------------------------- 2.替换文件内容: 把 "name1.txt" copy 一个为 "name2.txt",替换一个点 " . " 为 " _ " (就是 aa.bb.php --> aa_bb.php) (还好这个比较简单,可以 "aa.bb.php" --> "aa.bb-php" --> "aa_bb-php" --> "aa_bb.php") 替换文件内容 "aa.bb.php" --> "aa_bb.php" 不知道这样成立不 : for /f "delims=" %%a in ('dir/b *.php') do ( for /f %%b in (name1.txt) do ( for /f %%c in (name2.txt) do ( sed "s/%%b/%%c/g" %%a ))) **//想法是抽取 name2.txt 和 name1.txt 来对应文件内容 ****另,不知道怎样能循环所有下级文件夹***** ================ 请各位多多指教 谢谢! [ Last edited by feelnow on 2007-10-18 at 11:24 AM ] |
|
| 第2楼 fastslz | 发表于 2007-10-18 15:18 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
查看ren.php_php.cmd 是否达到要求: 把 html 以及下级(包括下下级)文件夹中的所有文件名(也就是说不包括当前目录?) aa.bb.php --> aa_bb.php aa.cc.php --> aa_cc.php xx.xx.php --> xx_xx.php(也就是说把第一的点替换为 _ ) aa.php (这样的就不用改名) [ Last edited by fastslz on 2007-10-18 at 05:05 PM ] |
|
| 第3楼 fastslz | 发表于 2007-10-18 15:32 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
哦忽略了可能包括空格的文件名
把>>ren.php_php.cmd echo move /y %%i.php !var!.php 改成>>ren.php_php.cmd echo move /y "%%i.php" "!var!.php" 你的第2点要求你会用sed就用相应的参数改吧 [ Last edited by fastslz on 2007-10-18 at 05:06 PM ] |
|
| 第4楼 26933062 | 发表于 2007-10-18 17:05 |
| 银牌会员 发帖 879 积分 2,268 | |
|
当文件名是 aa.php 时
无法判断内容是否包含 "aa.bb.php" 只有当文件名是aa.bb.php时,才能判断. 其它的都好办, |
|
| 第5楼 fastslz | 发表于 2007-10-18 21:34 |
| 铂金会员 发帖 2,315 积分 5,493 来自 上海 | |
|
2个要求应该达到吗 |
|
| 第6楼 tjdai | 发表于 2007-11-05 17:51 |
| 新手上路 发帖 6 积分 11 | |
|
我也下一个试试。。。。。。。。。。。。。。
|
|
| 第7楼 love3398 | 发表于 2007-11-06 01:36 |
| 新手上路 发帖 4 积分 8 | |
|
我还不能下哦!!
|
|
| 第8楼 terse | 发表于 2007-11-06 19:24 |
| 银牌会员 发帖 946 积分 2,404 | |
|
学习一个 不用SED
把前面的 "%%~fi" “”去了 [ Last edited by terse on 2007-11-6 at 08:56 PM ] |
|
| 第9楼 feelnow | 发表于 2007-12-02 01:09 |
| 新手上路 发帖 4 积分 12 | |
|
感谢"fastslz"和"terse" 的大力支持,
由于近来有些杂事没能脱身,没上来做答复结贴,实在抱歉, 按第 5/8 楼 的代码,已经能达到我的想法, 再次感谢! |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |