选择仅包含文件的文件夹

时间:2014-10-14 12:49:39

标签: sql-server tsql

我目前检索文件夹结构并使用Parent文件夹中包含的每个文件夹创建数据库。问题是,当有一个不包含任何文件的文件夹时,它就会崩溃。

INSERT INTO DBName
EXECUTE XP_CMDSHELL 'dir \\FAS-RBGFS01\costec\FTP\ /b'

这会带回所有文件夹的列表,无论它是否包含数据:

output
CAD
CEN
CRO
EXC
FRM
IND
LGL
RSK
ZZZ
NULL

文件夹" CAD"不包含任何文件。

我如何只选择包含文件/数据的文件夹?

提前谢谢

1 个答案:

答案 0 :(得分:1)

您无法使用dir命令实现此目的。相反,您可以使用批处理脚本并使用XP_CMDSHELL调用该批处理脚本,如下所示。

取自how-to-list-all-the-empty-directories-using-windows-batch-file

您可以将以下脚本保存在名为test.bat

的文件中
@echo off
dir /a /b %1 2>nul | findstr "^" >nul || echo %%~fA
for /f "eol=: delims=" %%A in ('dir /s /ad /b %1') do (
  dir /a /b "%%~fA" 2>nul | findstr "^" >nul || echo %%~fA
)

然后将其称为

INSERT INTO DBName
EXECUTE XP_CMDSHELL 'test.bat \\FAS-RBGFS01\costec\FTP\'