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

Find folder named with lowest number in a directory , conditional statement on the command line

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

假设如果有名称为 9、10、11... 最多 1023 的文件夹。我想复制文件夹的命令(一旦确定并找到)将类似于:

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

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

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

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

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

1) 将 low 设置为批量中可能的最大数量(我使用了十六进制表示法)

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