Board logo

标题: 请教:如何进入某个特定文件夹下的第二个子文件夹? [打印本页]

作者: liaowm     时间: 2008-7-27 22:34    标题: 请教:如何进入某个特定文件夹下的第二个子文件夹?

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

@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%"
  )
)

作者: liaowm     时间: 2008-7-29 07:27    标题: 谢谢HAT,请再详细指教!

对不起您的指点,我没有弄明白。请详细注明一下,可以么?
作者: HAT     时间: 2008-7-29 12:48
哪句不懂,就问哪句。如果全部不懂,就先看看教程。
作者: liaowm     时间: 2008-7-29 18:06    标题: 感谢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 ]
作者: HAT     时间: 2008-7-29 18:09
计算机名
echo %computername%

作者: liaowm     时间: 2008-7-30 21:58    标题: 感谢HAT!

经过测试,批处理完全能够满足我的要求,并运行良好,谢谢HAT,非常感谢!
作者: liaowm     时间: 2008-7-31 12:16    标题: 再次请教!

批处理正式应用时发现一个问题,文件移动速度太慢。由于测试时,所用的文件较小,运行时速度比较快,文件很快就移动完成。实际应用时,大的文件移动速度比较慢,感觉比通过网上邻居复制还要慢,应该如何解决。请指教!
我在批处理中,将文件夹进行了以下形式的引用:
set SFolder=\\%computername%\dl$
set TFolder1=\\%computername%\biao$
set TFolder2=\\%computername%\one$
是否与此有关,该如何解决?是否必须将文件夹路径中的"\\%computername%\"写成"c:\test\linshi"这样的形式?文件夹路径中包含中文名有没有影响?谢谢!
作者: huahua0919     时间: 2008-7-31 13:41
写成你这个形式,不就是你本机的路径了啊。
作者: liaowm     时间: 2008-7-31 13:51
写成以下这种形式:
set SFolder=\\%computername%\dl$
set TFolder1=\\%computername%\biao$
set TFolder2=\\%computername%\one$
在批处理中,进行文件移动的时候(在同一个磁盘分区),速度比较慢。而实际上,在资源管理器中进行文件移动的操作时,速度是相当快地。
作者: huahua0919     时间: 2008-7-31 13:56
在同一分区下你怎么会用\\的形式呢?
那样当然慢了
直接就是
set SFolder=%computername%\dl$
作者: HAT     时间: 2008-7-31 14:22
如果拷贝到本机,不要使用\\%computername%
如果拷贝到远程机器,用IP地址代替%computername%
作者: liaowm     时间: 2008-7-31 15:40
我知道了,谢谢!