2014-10-14 2 views
0

В настоящее время я извлекаю структуру папок и создаю базу данных с каждой папкой, содержащейся в папке Родитель. Проблема в том, что когда есть папка, которая не содержит файлов, она падает.Выберите ТОЛЬКО папки, содержащие файлы

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

Какой язык программирования вы используете? –

+1

@DanBracuk Я думаю, что это просто SQL (T-SQL w/SQL Server, если быть точным). –

+0

Hi Dan Bracuk, я использую SQL для импорта структуры папок. – PKirby

ответ

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\' 
+0

Привет, Рахул. Я создал файл .bat по запросу и выполнил предоставленный скрипт, но следующая ошибка импортируется в мою таблицу DBName: «test.bat» не распознается как внутренняя или внешняя команда, операционная программа или командный файл. – PKirby

+0

Appologies. Я обновил исполняемый скрипт, чтобы указать на местоположение файла .bat, и теперь он импортирует папки, которые не содержат никаких файлов. Как я могу достичь противоположного? Я хочу выбрать папки, содержащие файлы, и исключить папки, которые не содержат файлов. – PKirby

+0

Я импортировал папки (используя ваш скрипт) в таблицу TEMP и удалил из DBName, где эта запись существует в таблице TEMP. Это только оставляет папки в DBName, которые содержат файлы. Ваш совет действительно очень помог мне. Спасибо! – PKirby

Смежные вопросы