批处理脚本:搜索文件夹是否包含任何文件

时间:2010-10-13 09:12:38

标签: search file batch-file directory

我正在尝试使用批处理脚本来检查文件夹中是否包含任何文件。到目前为止,这是我有多远:

IF EXIST %FILEPATH%\%%i\FromGlobus\%FILE% (

%WINZIP% %FILEPATH%\GlobusEOD\ExtraFiles\%ZIPFILE% -m %FILE%
IF errorlevel 1 goto subBADEND

)

其中%FILE%*.*但是会​​发生什么呢?它会尝试压缩文件,即使它们不存在也因此失败!

任何提示或想法?

谢谢

5 个答案:

答案 0 :(得分:2)

在修改我自己的脚本之后

@Belisarius'答案的变体是我一段时间以来一直使用的......经过一些修补,@NimeCloud's版本似乎在我的XP机器上不起作用......

我想出了两种似乎能满足我需求的混合物:

%FOLDER%=C:\Temp
FOR /F %%i in ('dir /b "%FOLDER%\*.*"') DO ( goto :Process )
goto :Exit

:Process
...
...
...

:Exit
exit

答案 1 :(得分:1)

您可以使用类似

的内容
set VAR=init
for /f %%a in ('dir /b c:\kk\*.*') do set VAR=exists
if %VAR%==exists ...

在大型目录的情况下效率不高,但它有效。

HTH!

答案 2 :(得分:1)

dir 返回。 ..也许这些虚拟的dirs导致混乱。您可以尝试使用FIND管道,如下所示:

SET filter=*.*
SET notfound="File not found"

DIR %filter% | FIND %notfound% 
@If ErrorLevel 1 Goto :end

答案 3 :(得分:0)

如果对/A:-D命令使用dir,那么如果目录有文件,它将切换返回码。仅适用于文件(/A:D不能以相同的方式对子目录起作用)

dir /A:-D /B "mydir" >nul 2>nul && echo.mydir having files

答案 4 :(得分:0)

您可以将finddir配合使用,以确保返回码与找不到文件时的期望值相符:

DIR /A /B | >NUL FIND /V "" && ECHO Folder contains files || ECHO Folder empty