在命令行中查找目录中具有最小编号的文件夹,条件语句

时间:2015-06-04 14:18:58

标签: windows batch-file command-line conditional-statements xcopy

我是lein命令的条件语句的新手,我想为运行Windows Server 2003的服务器写一个批处理文件,以执行与此类似的任务,但是要查找该语句的语句编号最小的文件夹(包括子目录)并将其复制到连接到服务器的外部驱动器。

假设文件夹的名称如9,10,11,......最高为1023.我猜复制文件夹的命令(一旦确定并找到)将如下所示:

xcopy source:\dir\subdir\9 destination:\dir\subdir\9 /s /e /t

基本上,每天都有大量文件添加到驱动器中,并且必须将其移动到外部月份的存档中。我如何编写if语句来查找名称最小的文件夹?

1 个答案:

答案 0 :(得分:0)

我不明白编号最小的文件夹与最近添加的文件有什么关系,但我会假设你知道你在做什么。

您暗示要复制最近添加的文件,因此您不需要XCOPY /T选项。我添加了/I选项,以便XCOPY假定您的目的地是一个文件夹。

识别最低文件夹的逻辑很简单:

1)批量设置为最低可能的数字(我使用十六进制表示法)

2)列出所有目录,使用FINDSTR将列表限制为整数名称

3)用FOR / F处理列表。对于每个文件夹,测试它是否低于当前的低值。如果是,请将文件夹指定为低。

@echo off
setlocal enableDelayedExpansion

:: Establish source and destination folders
set "src=c:\dir\subdir"
set "dest=d:\dir\subdir"

:: Identify the lowest folder
set /a low=0x7fffffff
for /f %%A in ('dir /b /ad "%src%"^|findstr /x [0-9]*') do if %%A lss !low! set "low=%%A"

:: Copy the lowest folder
xcopy "%src%\%low%" "%dest%\%low%" /s /e /i