我是lein命令的条件语句的新手,我想为运行Windows Server 2003的服务器写一个批处理文件,以执行与此类似的任务,但是要查找该语句的语句编号最小的文件夹(包括子目录)并将其复制到连接到服务器的外部驱动器。
假设文件夹的名称如9,10,11,......最高为1023.我猜复制文件夹的命令(一旦确定并找到)将如下所示:
xcopy source:\dir\subdir\9 destination:\dir\subdir\9 /s /e /t
基本上,每天都有大量文件添加到驱动器中,并且必须将其移动到外部月份的存档中。我如何编写if语句来查找名称最小的文件夹?
答案 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