在目录中查找以最小编号命名的文件夹,命令行上的条件语句
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
我不熟悉使用命令 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