我正在尝试使用批处理脚本来检查文件夹中是否包含任何文件。到目前为止,这是我有多远:
IF EXIST %FILEPATH%\%%i\FromGlobus\%FILE% (
%WINZIP% %FILEPATH%\GlobusEOD\ExtraFiles\%ZIPFILE% -m %FILE%
IF errorlevel 1 goto subBADEND
)
其中%FILE%
是*.*
但是会发生什么呢?它会尝试压缩文件,即使它们不存在也因此失败!
任何提示或想法?
谢谢
答案 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)
您可以将find
与dir
配合使用,以确保返回码与找不到文件时的期望值相符:
DIR /A /B | >NUL FIND /V "" && ECHO Folder contains files || ECHO Folder empty