标题: (求助)如何编写一个.bat文件实现文件更名批处理
[打印本页]
作者: tommy725
时间: 2007-3-31 18:11
标题: (求助)如何编写一个.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 ]
作者: slore
时间: 2007-3-31 18:18
!a: =-!
作者: bjsh
时间: 2007-3-31 22:44
这个
Quote: |
- @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
BJSH发表于: 2007-03-31 09:37 |
|
[
Last edited by bjsh on 2007-3-31 at 09:47 AM ]
作者: zzhh612
时间: 2007-3-31 23:12
标题: 上面的答案试了一下,没成功.
有待改进工作
作者: bjsh
时间: 2007-4-1 00:35
我自己试着怎么没问题呢??
ls的说一下出错信息
作者: tommy725
时间: 2007-4-1 05:59
非常谢谢bjsh,我试一下看看.不过我还是看不懂,你如果能给我解释一下每句的含义或者功能,那就更加感谢了.
作者: flyinspace
时间: 2007-4-1 07:49
for /f "delims=" %%a in ('dir /b /a *.pdf') do set "old_name=%%a" &call :re_name
对于这一句话?想问个问题?
('dir /b /a *.pdf')里面的参数是不是只会执行一次?然后把把所有变量放内存里?等程序一个一个的读取?
当里面读取的内容非常多的时候。会不会造成机器假死?
作者: huzixuan
时间: 2007-4-1 08:50
刚才写错了.
@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 ]
作者: tommy725
时间: 2007-4-1 17:43
谢谢大家,我可不可以这样测试啊,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
作者: bjsh
时间: 2007-4-1 22:49
直接运行我写的那个;也出现这种错误吗???
作者: wuwuwuming
时间: 2007-4-1 23:05
好是好,可是看不懂,真是郁闷~~~~
作者: tommy725
时间: 2007-4-2 19:54
我运行了
@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.
作者: qingfushuan
时间: 2007-4-2 21:56
标题: 试试这个
我刚才写的,经测试可以更名的
@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了,这样子将就用可以了不
作者: tommy725
时间: 2007-4-2 22:35
两个空格是我输入错误,如果可以空格变"-"就可以
作者: kcdsw
时间: 2007-4-2 22:42
ren "* *.pdf" "*-*.pdf"
作者: tommy725
时间: 2007-4-2 22:50
是我自己对语法不熟悉,输入有误,测试都成功了,谢谢大家.不过大家还有新的方法也可以贴出来比较一下
谢谢
[
Last edited by tommy725 on 2007-4-2 at 09:52 AM ]
作者: acme
时间: 2007-4-13 09:06
好象没有指定路径,可以指定路径吗?
要不怎么知道回更名那些路径下的?
作者: fanglor
时间: 2007-4-13 14:07
set str=!str: =-!
能不能说一下这句是什么意思 啊?
谢谢了!
作者: bjsh
时间: 2007-4-13 21:25
set str=%str: =-%
是把环境变量str中的空格替换为-
比如
set p=14+58+96
set p=%p:+=-%
则执行后 %p% 为14-58-96