请教大家一个在命令行下批量重命名文件的方法,谢谢!

WandyGao 2007-03-12 01:47:29
有一堆文件命名如下:
20070201.024
20070202.024
20070203.024
20070204.024
……
想使用批处理命令将其改名为
rr0201.024
rr0202.024
rr0203.024
rr0204.024
……
请问大家这个批处理该怎么写呢?谢谢大家!
...全文
1643 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
heguo 2007-03-13
  • 打赏
  • 举报
回复
sorry,以上回复错误.
heguo 2007-03-13
  • 打赏
  • 举报
回复
ren ????02??.024 rr02*.024
winxp下通过测试
老汉 2007-03-13
  • 打赏
  • 举报
回复
汗楼上,能直接用BAT处理的问题,再搞个WINFORM去解决还更简单?

DOS命令行是每个机子上都有的,.net fw每个机子上都有么?
junoon 2007-03-13
  • 打赏
  • 举报
回复
最简单是写bat脚本。。
chaney 2007-03-13
  • 打赏
  • 举报
回复
写个Winform更简单些吧,定时器、正则、替换、文件类。
ylhyh 2007-03-13
  • 打赏
  • 举报
回复
mark
王集鹄 2007-03-12
  • 打赏
  • 举报
回复
我测试过可以啊

for %%i in (*.024) do call :goren %%i
goto end
:goren
set firstln=%1
set month=%firstln:~4,2%
set day=%firstln:~6,2%
ren %1 rr%month%%day%.024
goto end
:end
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
for /l %%i in (101,1,931) do ren %year%0%%i.024 rr0%%i.024
上面这句是处理月份小于10的,前面加一个0

下面这句是处理10月以后的直接接在年后面.
for /l %%j in (1001,1,1231) do ren %year%%%j.024 rr%%j.024
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
呵呵,算了.俺送佛送到西吧.
唯一的问题是处理时会有一些错误,因为我重命名了
20070101......20070199....20071199....等可能不存在的文件,不过为了怕麻烦了.呵呵,
如果不怕麻烦的话,也可以写得更精准点..

刚才小试了一把:
test.bat:

set year=2007

for /l %%i in (101,1,931) do ren %year%0%%i.024 rr0%%i.024
for /l %%j in (1001,1,1231) do ren %year%%%j.024 rr%%j.024

WandyGao 2007-03-12
  • 打赏
  • 举报
回复
大家能帮我找一下原因吗?俺是黔驴技穷了啊……
WandyGao 2007-03-12
  • 打赏
  • 举报
回复
我写出来一个批处理文件,但是不能正确执行,大家帮忙看一下好不好有空?批处理如下:

for %%i in (*.024) do call :goren %%i
goto end

:goren
set /p firstln=%1
set month=%firstln:~4,2%
set day=%firstln:~6,2%
ren %1 rr%month%%day%.024
goto end

:end

执行的结果会把month的值赋成lf,day的值赋成jk,每一个文件在处理的时候都是这样子,大家能找到原因吗?
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
正在上班,太忙,没时间测试了,
你参照一下这个吧:
用批处理实现文本文件中指定字符串的替换:
http://phpsky.info/article_1273.html
这是替换文件中的字符串的,换文件名应该更简单些.
呵呵
WandyGao 2007-03-12
  • 打赏
  • 举报
回复
还有人知道怎么写吗?
WandyGao 2007-03-12
  • 打赏
  • 举报
回复
知道该怎么写吗topken?我还没有弄出来……
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
如果非要这样,可以用管道命令,前面的Dos命令取文件,然后把文件名作为参数通过管道传过去,再改名.
不过太麻烦了,弄不好还出错..呵呵..
WandyGao 2007-03-12
  • 打赏
  • 举报
回复
呵呵,topken的办法总觉得也不是一个很好的办法,我正在看DOS下的批处理命令,似乎可以解决,大家知道这个命令该怎么写吗?
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
哈哈,没说明呀.那更简单
可以看出你的文件名有规律,那还不简单.
一个bat就搞定了:
建一个test.bat把每天的文件名都搞上:
rename 20070101.024 rr0101.024
rename 20070102.024 rr0102.024
...
rename 20070201.024 rr0201.024
...无限多
rename 20070201.024 rr1231.024
...
然后每天都执行这个东西,明白了吧.如果不存在文件名虽然会报错,但并不影响后面的执行.
而且也不会重复执行,改过的下次就不会再改了...每天都调用test.bat就行了...
WandyGao 2007-03-12
  • 打赏
  • 举报
回复
这个是要做一个dos下的批处理放在任务计划里面自动运行的啊楼上的各位……
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
存成后缀名 test.bat,然后就在命令行下 test.bat
就OK了,很方便.如果编程的话也行.不过有点远了
苏陌Bubble 2007-03-12
  • 打赏
  • 举报
回复
在你的目录下:
dir > test.txt
把所有的文件名输出到一个文本文件中.
然后用编辑器(UltraEdit最好),按列模式编辑一下
每个文件名都换成:
rename 20070201.024 rr0201.024
rename 20070202.024 rr0202.024
....

如果没有UltraEdit用Excel也行.分成三列.也很方便.
加载更多回复(2)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧