【问题标题】:Check folder is empty using batch command?使用批处理命令检查文件夹是否为空?
【发布时间】:2013-07-18 16:10:11
【问题描述】:
for /F %%i in ('dir /b "C:\Program Files\Apache folder\*.*"') do (
   echo Folder is NON empty
   goto launch_app
)
  • 如何检查文件夹是否为空?

    上面的命令我试过了,但是没用。

【问题讨论】:

标签: windows batch-file command directory


【解决方案1】:

试试这个:

for /F %%i in ('dir /b /a "C:\Program Files\Apache folder\*"') do (
    echo if you see this the folder is NOT empty
    goto launch_app
)

【讨论】:

  • 它说系统找不到指定的路径。我在那个位置有 Apache 文件夹。在 apache 里面我还有一个文件夹。但仍然出现错误。
  • 要检查更多文件夹,请从dir 中删除-d 选项。
  • 我尝试删除 -d 仍然说系统找不到指定的路径。
【解决方案2】:

找不到文件

@for /f "tokens=*" %%a in ('dir /b /a-d "C:\Progra~1\Apache"') do @...

您在运行此命令时看到的错误来自标准错误输出。但这只是打印到控制台的警告。当这种情况发生时,迭代的主体将不会被评估,基于这个“for/dir”指令的算法实际上是正确的。

现在,如果您想摆脱这个丑陋的错误消息,您需要在脚本中添加以下内容,以便将标准错误重定向到空设备:

2>NUL

例如,在批处理文件中,使用适当的转义字符:

@rem Print a list of file paths
@for /f "tokens=*" %%a in ('dir /b /a-d "%srcPath%" 2^>NUL') do @echo(%srcPath%\%%a

【讨论】:

    【解决方案3】:
    @echo off
    cls
    echo.
    echo.
    echo.
    echo                  TEST FOR EMPTY DIRECTORY
    echo             was tested with "&" without a file
    echo.
    echo              Can use Full or Subfolder path
    echo               (as below) of where test.bat
    echo.
        set p=Raw\
    echo.
    echo                  Just to show p is set
    echo.
    echo                       "p=%p%"
    echo.
    echo.
    echo.
    pause
    
    for /F %%i in ('dir /b /a "%p%*"') do (
        echo Folder %p% was NOT empty
        goto :process
    )
        echo Folder %p% was empty 
    
    
    
    :process
        echo "BLAH, BLAH, BLAH "
    :end
        pause
        exit
    rem Copy past in notepad to try. "Create and use or change the "raw" to your own fancy."
    rem Hope this helps. Works great for me and I use it.
    rem Have Fun.
    rem Note use go to end next line after was empty. Worked great in w10. (this program hmm)
    rem IF IT WORKS FOR YOU . GIVE A +. THX!
    

    【讨论】:

    • 重新浏览这个网站后,我使用了 Endoro 的代码 4-19-13 并稍作修改。非常感谢 Endoro 和 +。
    【解决方案4】:
    dir C:\TEST\*.* /a/b/d/od>C:\TEMP\CHECKFOLDER
    for /R C:\TEMP\ %%? in (CHECKFOLDER) do (
     if "%%~z?"=="0" (
      ECHO Folder is empty.
     ) ELSE (
      ECHO Folder is NOT empty
     )
    )
    

    【讨论】:

    • 只有代码的答案几乎总是可以通过添加一些关于它们如何工作以及为什么工作的解释来改进?
    • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    【解决方案5】:

    我对给出的答案不满意,因为我尽量避免使用 for 循环、goto 和 temp 文件。

    检查文件夹是否为空:

    dir /b /s /a "C:\Program Files\Apache folder\" | findstr .>nul || (
      echo Folder is empty
    )
    

    检查文件夹是否为空:

    dir /b /s /a "C:\Program Files\Apache folder\" | findstr .>nul && (
      echo Folder is NOT empty
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-08
      • 2012-05-28
      • 2013-01-19
      • 2017-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      相关资源
      最近更新 更多