Batch file 批处理脚本,检查文件夹中的文件数是否小于X,然后执行命令

Batch file 批处理脚本,检查文件夹中的文件数是否小于X,然后执行命令,batch-file,Batch File,所以我有一个自动处理包含文件的文件夹。 我有另一个文件夹,其中有数千个文件要处理,我创建了一个脚本,使用Task Scheduler每小时将100个文件移动到该处理文件夹,但我只想在目标文件夹中的文件少于20个时才这样做 有人能帮我吗 谢谢 @echo off set Source=Source folder set Target=Destination folder set MaxLimit=100 for /f "tokens=1* delims=[]" %%G in ('dir /A

所以我有一个自动处理包含文件的文件夹。 我有另一个文件夹,其中有数千个文件要处理,我创建了一个脚本,使用Task Scheduler每小时将100个文件移动到该处理文件夹,但我只想在目标文件夹中的文件少于20个时才这样做

有人能帮我吗

谢谢

@echo off

set Source=Source folder
set Target=Destination folder

set MaxLimit=100

for /f "tokens=1* delims=[]" %%G in ('dir /A-D /B "%Source%\*.*" ^| find /v /n ""') do (
    move /y "%Source%\%%~nxH" "%Target%"
    if %%G==%MaxLimit% exit /b 0
)

对目标文件夹中的文件进行简单计数,以确定是否应使用条件检查进行处理

Set "Target=Destination folder"

Set count=0
FOR %%a IN (%Target%\*.*) DO (
    Set /a count+=1
)

If %count% LSS 20 (
    GOTO process
) else (
    EXIT
)

:process

"Insert your Move command Here"

对目标文件夹中的文件进行简单计数,以确定是否应使用条件检查进行处理

Set "Target=Destination folder"

Set count=0
FOR %%a IN (%Target%\*.*) DO (
    Set /a count+=1
)

If %count% LSS 20 (
    GOTO process
) else (
    EXIT
)

:process

"Insert your Move command Here"

对目标位置中的文件进行计数,如果足够,则退出

@echo off

set Source=Source folder
set Target=Destination folder
set MaxLimit=100

for /f %%a in ('dir /b /a-d "%target%\*" ^|find /c /v ""') do set "remaining=%%a" 
if %remaining% geq 20 (
  echo enough files in target; nothing to do.
  goto :eof
)

for /f "tokens=1* delims=[]" %%G in ('dir /A-D /B "%Source%\*.*" ^| find /v /n ""') do (
    move /y "%Source%\%%~nxH" "%Target%"
    if %%G==%MaxLimit% exit /b 0
)

对目标位置中的文件进行计数,如果足够,则退出

@echo off

set Source=Source folder
set Target=Destination folder
set MaxLimit=100

for /f %%a in ('dir /b /a-d "%target%\*" ^|find /c /v ""') do set "remaining=%%a" 
if %remaining% geq 20 (
  echo enough files in target; nothing to do.
  goto :eof
)

for /f "tokens=1* delims=[]" %%G in ('dir /A-D /B "%Source%\*.*" ^| find /v /n ""') do (
    move /y "%Source%\%%~nxH" "%Target%"
    if %%G==%MaxLimit% exit /b 0
)

或对目标文件夹中的文件进行计数,并且仅当数量小于您定义的数量时才进行处理:

@Set“SrcDir=源文件夹”
@设置“DstDir=目标文件夹”
@设置/A“最大CNT=100,最小CNT=20”
@对于(“%\uu AppDir\uuu%xcopy.exe”“%DstDir%\*”?/LSHQ 2>NUL”中的/F%%A
)执行@If%%A Lss%MinCnt%For/F“Tokens=1*Delims=[]”中的%%B(
“Dir/B/A-D/O-D”%SrcDir%”|“%\uuuu AppDir\uuuu%find.exe“/V/N”“”
)执行@Move/Y“%SrcDir%\%%~nxC”“%DstDir%”NUL&如果%%B eq%MaxCnt%B退出/B 0

或对目标文件夹中的文件进行计数,仅当文件数量小于您定义的数量时才进行处理:

@Set“SrcDir=源文件夹”
@设置“DstDir=目标文件夹”
@设置/A“最大CNT=100,最小CNT=20”
@对于(“%\uu AppDir\uuu%xcopy.exe”“%DstDir%\*”?/LSHQ 2>NUL”中的/F%%A
)执行@If%%A Lss%MinCnt%For/F“Tokens=1*Delims=[]”中的%%B(
“Dir/B/A-D/O-D”%SrcDir%”|“%\uuuu AppDir\uuuu%find.exe“/V/N”“”
)执行@Move/Y“%SrcDir%\%%~nxC”“%DstDir%”NUL&如果%%B eq%MaxCnt%B退出/B 0

对于('dir/b/a-d”%target%\*“^ find/c/v“')中的/f%%a,请设置“剩余=%%a”
如果剩余%gte 20 goto:eof
?(抱歉,这是
GEQ
,而不是
gte
)无论如何都无法使其工作。你能建议整个代码看看我是否做错了什么吗?
对于/f%%a in('dir/b/a-d”%target%\*“^ find/c/v“')设置“剩余=%%a”
如果剩余%gte 20转到:eof
?(对不起,这是
GEQ
,而不是
gte
)无论如何都无法让它工作。你能建议整个代码看看我是否做错了什么吗?顺便说一下,我移动的100个文件,我如何首先移动较新的文件?很简单:将
/o-d
开关添加到
dir
命令(请参见
dir/?
)它是这样的:dir/A-d/B/o-d Right?这是正确的。(
/OD
先移动最旧的文件,
/O-D
先移动最新的文件)顺便说一下,我移动的100个文件,如何先移动较新的文件?简单:将
/O-D
开关添加到
dir
命令(请参见
dir/?
)它是这样的:dir/A-D/B/O-D Right?这是正确的。(
/OD
移动最早的第一个,
/O-D
移动最新的第一个)