中国DOS联盟论坛

中国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