Как я могу определить, есть ли какой-либо файл в папке, использующей SSIS? - PullRequest
0 голосов
/ 14 марта 2020

Я каждый день получаю файл с указанным c шаблоном и расширением, который я хочу запустить под определенным процессом. Я хочу проверить, есть ли какой-либо файл в моей папке, потому что иначе я сделаю другую задачу. До сих пор я обнаружил, что вы можете использовать задачу Script и создать File.Exist. Тем не менее, я делаю что-то не так, потому что * не принимает * как подстановочный знак. Источник Devoluciones_s "C: \ Users \ us1 \ Folder \" FileToSearch "return"

Мои файлы: return_20200102.csv return_20200203.csv

String Filepath = Dts.Variables["$Project::Devoluciones_source"].Value.ToString() + Dts.Variables["User::FileToSearch"].Value.ToString() + "*csv";

        if (
            File.Exists(Filepath))

        {
            Dts.Variables["User::IsFound"].Value = 1;
        }

1 Ответ

0 голосов
/ 14 марта 2020

Я не думаю, что File.Exits () принимает подстановочные знаки, он проверяет буквальный путь к файлу и возвращает false, потому что C:\Users\us1\Folder\*.csv не найден.

Вместо этого вы можете получить файлы в папку C:\Users\us1\Folder\ и проверку этих параметров searchPattern с помощью Directory.GetFiles(path, searchPattern)

Пример:

string dirPath = Dts.Variables["$Project::Devoluciones_source"].Value.ToString(); 
string fileName = Dts.Variables["User::FileToSearch"].Value.ToString();

// if you want to make sure the directory exists:
if(Directory.Exists(dirPath) {
    string[] files = Directory.GetFiles(dirPath, fileName + "*.csv");

    if(files.lenght > 0) {
        // you can now iterate over each file that is found in the users directory that matches your pattern and do your logic.
    }
}

Дополнительная информация о методе Directory.GetFiles: Directory.GetFiles в документах .Microsoft.com

Дополнительная информация о методе Files.Exists: Directory.GetFiles на docs.Microsoft.com

...