中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 05:44
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » (求助)如何编写一个.bat文件实现文件更名批处理
可打印版本  2,856 / 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
这个


  1. @echo off
  2. for /f "delims=" %%a in ('dir /b /a *.pdf') do set "old_name=%%a" &call :re_name
  3. goto exit
  4. :re_name
  5. set "new_name=%old_name: =-%"
  6. ren "%old_name%" "%new_name%"
  7. :exit
BJSH发表于: 2007-03-31 09:37


[ 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