![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-04 03:34 |
共 48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » (求助)如何编写一个.bat文件实现文件更名批处理 |
| 可打印版本 2,847 / 18 |
| 第1楼 tommy725 | 发表于 2007-03-31 18:11 |
| 初级用户 发帖 14 积分 36 | |
|
(求助)如何编写一个.bat文件实现文件更名批处理 我遇到一个问题,比如,我有几百个.pdf文件
例如: central aaa 01.pdf akurss bbs 99.pdf sskpk p12 980 ok.pdf airchina lufthansa uk mu500.pdf 92 years anniver.pdf ......... 我想做的是编一个批处理文件xxx.cmd 运行一次可以把以上所有pdf文件中的"空格"自动改为"-". 运行xxx.cmd文件后,以上PDF文件即更名为以下并保存: central-aaa-01.pdf akurss-bbs-99.pdf sskpk-p12-980-ok.pdf airchina-lufthansa-uk-mu500.pdf 92-years-anniver.pdf ......... 请问如何编写,能否给出列子,谢谢啊 [ Last edited by tommy725 on 2007-4-2 at 06:55 AM ] |
|
| 第2楼 slore | 发表于 2007-03-31 18:18 |
| 铂金会员 发帖 2,478 积分 5,212 | |
|
!a: =-!
|
|
| 第3楼 bjsh | 发表于 2007-03-31 22:44 |
| 银牌会员 发帖 621 积分 2,000 | |
|
这个
[ Last edited by bjsh on 2007-3-31 at 09:47 AM ] |
|
| 第4楼 zzhh612 | 发表于 2007-03-31 23:12 |
| 中级用户 发帖 103 积分 278 | |
|
上面的答案试了一下,没成功. 有待改进工作
|
|
| 第5楼 bjsh | 发表于 2007-04-01 00:35 |
| 银牌会员 发帖 621 积分 2,000 | |
|
我自己试着怎么没问题呢??
ls的说一下出错信息 |
|
| 第6楼 tommy725 | 发表于 2007-04-01 05:59 |
| 初级用户 发帖 14 积分 36 | |
|
非常谢谢bjsh,我试一下看看.不过我还是看不懂,你如果能给我解释一下每句的含义或者功能,那就更加感谢了.
|
|
| 第7楼 flyinspace | 发表于 2007-04-01 07:49 |
| 银牌会员 发帖 517 积分 1,206 | |
|
for /f "delims=" %%a in ('dir /b /a *.pdf') do set "old_name=%%a" &call :re_name
对于这一句话?想问个问题? ('dir /b /a *.pdf')里面的参数是不是只会执行一次?然后把把所有变量放内存里?等程序一个一个的读取? 当里面读取的内容非常多的时候。会不会造成机器假死? |
|
| 第8楼 huzixuan | 发表于 2007-04-01 08:50 |
| 高级用户 发帖 219 积分 537 来自 芜湖 | |
|
刚才写错了.
@echo off setlocal enabledelayedexpansion for %%h in (*.pdf) do ( set str=%%h set str=!str: =-! ren "%%h" "!str!") [ Last edited by huzixuan on 2007-4-1 at 08:54 AM ] |
|
| 第9楼 tommy725 | 发表于 2007-04-01 17:43 |
| 初级用户 发帖 14 积分 36 | |
|
谢谢大家,我可不可以这样测试啊,edit file.cmd,然后把代码写进去保存,然后在所在文件夹下运行这个文件.所在文件夹下有三个测试的.pdf文档.但是这个结果怎么出现这个啊:
a duplicate file name exists,or the file can not be found a duplicate file name exists,or the file can not be found a duplicate file name exists,or the file can not be found |
|
| 第10楼 bjsh | 发表于 2007-04-01 22:49 |
| 银牌会员 发帖 621 积分 2,000 | |
|
直接运行我写的那个;也出现这种错误吗???
|
|
| 第11楼 wuwuwuming | 发表于 2007-04-01 23:05 |
| 初级用户 发帖 18 积分 37 | |
|
好是好,可是看不懂,真是郁闷~~~~
|
|
| 第12楼 tommy725 | 发表于 2007-04-02 19:54 |
| 初级用户 发帖 14 积分 36 | |
|
我运行了
@echo off for /f "delims= " %%a in ('dir /b/a *.pdf') do set "old_name=%%a" &call :re_name goto exit :re_name set "new_name=%old_name:=-%" ren "%old_name%" "%new_name%" :exit 运行后说命令的语法不正确 the syntax of the command is incorrect. |
|
| 第13楼 qingfushuan | 发表于 2007-04-02 21:56 |
| 高级用户 发帖 327 积分 502 | |
|
试试这个 我刚才写的,经测试可以更名的
@echo off&setlocal enabledelayedexpansion for /f "delims=." %%a in ('dir /a-d /b *.pdf') do ( set str=%%a set str=!str: =-! ren "%%a".pdf !str!.pdf ) pause 但是你的sskpk p12 980 ok.pdf有两个空格所以更名出来就是 sskpk--p12-980-ok.pdf了,这样子将就用可以了不 |
|
| 第14楼 tommy725 | 发表于 2007-04-02 22:35 |
| 初级用户 发帖 14 积分 36 | |
|
两个空格是我输入错误,如果可以空格变"-"就可以
|
|
| 第15楼 kcdsw | 发表于 2007-04-02 22:42 |
| 中级用户 发帖 179 积分 404 | |
|
ren "* *.pdf" "*-*.pdf"
|
|
| 1 2 下一页 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |