中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 请教:如何进入某个特定文件夹下的第二个子文件夹?
作者:
标题: 请教:如何进入某个特定文件夹下的第二个子文件夹? 上一主题 | 下一主题
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『楼 主』:  请教:如何进入某个特定文件夹下的第二个子文件夹?

在某个特定的文件夹下有几个以日期为名字的子文件夹,例如:2008-01-01,2008-01-02,2008-01-03等(此子文件夹为程序自动创建),要实现以下功能:1、将第二个子文件夹里的所有文件移动到一个固定的文件夹中;2、删除第二个子文件夹。希望通过批处理实现此功能,方便扩展为第四个子文件夹等,机器全部为XP操作系统。需要详细的实现方法和步骤,非常感谢!

2008-7-27 22:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  


@echo off
set SrcFolder=C:\test
set DstFolder=C:\a
set FolderNo=2
set count=0
setlocal enabledelayedexpansion
for /f "delims=/" %%a in ('dir /ad /b "%SrcFolder%"') do (
  set /a count+=1
  if !count! equ 2 (
    move /y "%SrcFolder%\%%a\*.*" "%DstFolder%"
  )
)




2008-7-27 22:52
查看资料  发短消息 网志   编辑帖子  回复  引用回复
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『第 3 楼』:  谢谢HAT,请再详细指教!

对不起您的指点,我没有弄明白。请详细注明一下,可以么?

2008-7-29 07:27
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

哪句不懂,就问哪句。如果全部不懂,就先看看教程。



2008-7-29 12:48
查看资料  发短消息 网志   编辑帖子  回复  引用回复
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『第 5 楼』:  感谢HAT!

看了下教程,查了下参数,基本明白了,FOR语句还是没能完全理解,但不影响应用了。
“if !count! equ 2”中的数字2是否可以使用“set FolderNo=2”中的变量“FolderNo”,写成“if !count! equ %FolderNo%”是否可行?
另外:如果在本机使用“source$”和“target$”这样的共享文件夹为源和目的文件夹,文件夹的路径变量写成形如:
set SrcFolder=\\计算机名\source$\test
set DstFolder=\\计算机名\target$\a
这样的形式是否可行。如果可行,本机的“计算机名”如何在批处理中定义并可以调用。请指教,谢谢!

[ Last edited by liaowm on 2008-7-29 at 06:11 PM ]

2008-7-29 18:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 6 楼』:  

计算机名
echo %computername%




2008-7-29 18:09
查看资料  发短消息 网志   编辑帖子  回复  引用回复
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『第 7 楼』:  感谢HAT!

经过测试,批处理完全能够满足我的要求,并运行良好,谢谢HAT,非常感谢!

2008-7-30 21:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『第 8 楼』:  再次请教!

批处理正式应用时发现一个问题,文件移动速度太慢。由于测试时,所用的文件较小,运行时速度比较快,文件很快就移动完成。实际应用时,大的文件移动速度比较慢,感觉比通过网上邻居复制还要慢,应该如何解决。请指教!
我在批处理中,将文件夹进行了以下形式的引用:
set SFolder=\\%computername%\dl$
set TFolder1=\\%computername%\biao$
set TFolder2=\\%computername%\one$
是否与此有关,该如何解决?是否必须将文件夹路径中的"\\%computername%\"写成"c:\test\linshi"这样的形式?文件夹路径中包含中文名有没有影响?谢谢!

2008-7-31 12:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 9 楼』:  

写成你这个形式,不就是你本机的路径了啊。

2008-7-31 13:41
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『第 10 楼』:  

写成以下这种形式:
set SFolder=\\%computername%\dl$
set TFolder1=\\%computername%\biao$
set TFolder2=\\%computername%\one$
在批处理中,进行文件移动的时候(在同一个磁盘分区),速度比较慢。而实际上,在资源管理器中进行文件移动的操作时,速度是相当快地。

2008-7-31 13:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
huahua0919
银牌会员




积分 1608
发帖 780
注册 2007-10-7
状态 离线
『第 11 楼』:  

在同一分区下你怎么会用\\的形式呢?
那样当然慢了
直接就是
set SFolder=%computername%\dl$

2008-7-31 13:56
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 12 楼』:  

如果拷贝到本机,不要使用\\%computername%
如果拷贝到远程机器,用IP地址代替%computername%



2008-7-31 14:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
liaowm
新手上路





积分 16
发帖 7
注册 2008-7-27
状态 离线
『第 13 楼』:  

我知道了,谢谢!

2008-7-31 15:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: