检查目录中是否有任何文件,以及是否有另一个脚本调用

时间:2013-03-08 16:46:10

标签: windows batch-file

我正在尝试编写一个批处理脚本来检查目录中是否有任何文件,以及是否有另一个脚本调用。这就是我所拥有的:

@echo off

for /f %%A in ('dir /b "..\data\partials\processing"^| find /v /c ""') do set cnt=%%A


if %cnt% gtr 0 
(
    call otherscript.bat
) 

每次我运行它(我已经尝试过一百万次排列)

“命令的语法不正确。”

但是当我在提示符dir / b .. \ data \ partials \ processing |中运行相同的命令时查找/ v / c“”它没有问题。

我对Bash比批量更熟悉......有人可以帮忙吗?

PS>请不要建议powershell,这不是一个选项。我正在修改现有的脚本。

@echo off
call %~dp0..\config\script\set_environment.bat
copy %ENDECA_PROJECT_DIR%\test_data\partial\* %ENDECA_PROJECT_DIR%\data\partials\incoming
for /F %%i in ('dir /b "..\data\partials\processing\*.txt"') do ( call call %~dp0runcommand.bat --skip-definition PartialUpdate 2>&1 )

3 个答案:

答案 0 :(得分:1)

试试这个。我没有机会检查,即将离开工作,非常类似于你所做的一些小改动。

@echo off

for /F %%i in ('dir /b "c:\mydirectory\*.*"') do (
    call otherscript.bat
    goto :EOF
)

echo Folder is empty or does not exist

答案 1 :(得分:1)

事实上,您的if命令的语法不正确。左括号应与if在同一行。

但是,如果您只计算文件以检查结果是否大于0,您可以尝试不同的方法:

(DIR /B "path" | FINDSTR . 1>NUL) && (
  command to run if the directory has files
) || (
  command to run if no file exists
)

如果前一个命令或命令块以零退出代码终止,则&&会导致以下命令或命令块运行。 ||类似,但检查前一个命令或命令块是否以 -zero退出代码结束。

FINDSTR命令设置非零退出代码,如果它在输入流中没有找到任何内容。由于搜索字词只是.,代表任何字符,只有在DIR导致空输出时才能设置非零退出代码意味着 path 没有任何文件。

答案 2 :(得分:0)

非空目录不会将cnt设置为文件名,因此如果cnt为空,则该文件夹为空。

set cnt=
for  %%a in (..\data\partials\processing\*.*) do set cnt=%%a

if !%cnt%!==!! call otherscript.bat