中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]如何判断已有的文件夹名并自动按顺序重命名?
作者:
标题: [已结]如何判断已有的文件夹名并自动按顺序重命名? 上一主题 | 下一主题
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『楼 主』:  [已结]如何判断已有的文件夹名并自动按顺序重命名?

如题。

举例:在纯DOS下,D盘上已存在F0、F1、F2、F3四个文件夹,现在要自动判断,如果存在F1、F2、F3文件夹,就自动把F0重命名为F4;

         如果D盘上已存在F1、F2、F3、F4四个文件夹,再自动判断,并自动把F0重命名为F5,等等。

这样的批处理应该怎么写?

最好避免使用第三方工具,DOS环境:MS-DOS v7.1

请高手指点!

先谢谢了:)

[ Last edited by willsort on 2006-4-10 at 12:30 ]

2006-4-8 13:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 2 楼』:  

为什么
if exist D:\F3 ren D:\F3 F4
无效
显示无语法错误
但是F3没有被重命名为F4

在D盘下,输入
if exist D:\F3 ren F3 F4

也是一样!

这是什么缘故?

请教……

2006-4-8 16:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 3 楼』:  

但是如果输入:
@echo off
D:
ren F3 F4
可以把F3重命名为F4的
这个是在纯DOS下试的
为什么加了“if exist”语句就不行了呢?而且DOS也未显示语法错误的提示。

2006-4-8 16:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 4 楼』:  

Re martin325:

      在线编写的一段代码,可以按照F0~F9的顺序,将第一个存在的目录改名为其后的第一个不存在的目录。注意:代码未经任何有效性测试,请在谨慎、全面测试无误后再投入使用!
@echo off
if not "%1"==":" %0 : F0 F1 F2 F3 F4 F5 F6 F7 F8 F9

:LoopSrc
if "%2"=="" goto error
shift
if not exist "d:\%1\nul" goto LoopSrc
set src=%1

:loopDst
if "%2"=="" goto error
shift
if exist "d:\%1\nul" goto LoopDst
set dst=%1

ren "d:\%src%" "%dst%"

if exist "d:\%dst%\nul" goto clear

:error
echo.
echo Error: Not found src/dst, or rename fail!
echo.

:clear
for %%e in (src dst) do set %%e=

:end
[ Last edited by willsort on 2006-4-8 at 17:29 ]

   此帖被 +10 点积分         点击查看详情   




※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2006-4-8 17:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 5 楼』:  

谢谢willsort:)

请教goto loop1的loop1的标签在哪儿?

刚才测试,当只有文件夹F0存在时,可以把F0重命名为F1;
当F1、F2存在时,显示错误提示:Label not found.

2006-4-8 17:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 6 楼』:  

如果文件夹F0、F1……F9是隐藏属性的,不知行不行?

本人先去试试……

2006-4-8 17:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 7 楼』:  

成功了!

高手不愧是高手!

佩服中……

2006-4-8 18:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 8 楼』:  

为什么在批处理调用上面的一段代码就不行了呢?

单独运行是正常的!

是不是需要先清空变量,如何设置?

请指教!

2006-4-9 08:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 9 楼』:  

找到原因了:

把上面willsort提供的批处理命名为ren.bat或者rename.bat时,由于ren、rename本身是DOS的内部命令,故这样命名的批处理当作单条的ren命令来执行了。

呵呵……

2006-4-9 10:36
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
martin325
银牌会员





积分 1582
发帖 603
注册 2006-2-20
状态 离线
『第 10 楼』:  

不知道这样的理解对不对?

自己也搞糊涂了。

2006-4-9 11:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
MIN
初级用户





积分 58
发帖 17
注册 2006-3-22
状态 离线
『第 11 楼』:  

那么难懂的,
if not "%1"==":" %0 : F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
这句该如何理解?

2006-4-9 13:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: