Запуск файла .dtsx через командную строку программно из winform c #

2

Я новичок в программировании. Я надеялся на некоторую помощь, чтобы исправить приведенный ниже код.

У меня есть приложение WinForms, использующее базу данных SQL Azure. в целом я пытаюсь автоматически импортировать файл CSV, когда он поступает в папку cdrive.

Я исследовал и попробовал BCP, но не смог пройти проверку безопасности Azure на своей учетной записи...., я не думаю, что мой синтаксис построен правильно. Я также снова посмотрел на вариант хранения Blob без особой удачи. Мне нужно больше исследовать эти варианты.

если я применить следующее непосредственно к командной строке

dtexec/f "C:\InboundWindow\ImportScript.dtsx 

Я получил успешный результат. Имея это в виду, я затем перетащил fileSystemWatcher на свои WinForms и затем применил следующий код.

private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e) {


  // Process.Start("cmd", @"/C dtexec/f "C:\InboundWindow\ImportScript.dtsx");
  Process p = new Process();
  p.StartInfo.FileName = "cmd.exe";
  p.StartInfo.Arguments = @ "/C dtexec/f "C:\InboundWindow\ImportScript.dtsx";
  p.StartInfo.RedirectStandardOutput = false;
  p.StartInfo.UseShellExecute = false;
  p.StartInfo.CreateNoWindow = false; //don't show the console at all
  p.Start();


  // FullPath is the new file path.
  MessageBox.Show(string.Format("Created: {0} {1}", e.FullPath, e.ChangeType));


}

это то, где это теперь терпит неудачу. Я пробовал много вариантов, найденных на различных форумах, однако файл .dtsx никогда не импортируется в базу данных SQL Azure. однако я получаю ответное сообщение с сообщением об изменении папки.

Любая помощь в освещении, где я иду не так, и исправление вышеупомянутого было бы здорово. пожалуйста, потерпите меня, поскольку я новичок в С# и программировании в целом. Спасибо

  • 0
    Вам не хватает закрывающего " для Arguments : попробуйте p.StartInfo.Arguments = @"/C dtexec/f ""C:\InboundWindow\ImportScript.dtsx"""; см. Здесь для использования двойных кавычек и @ .
  • 0
    благодарю вас!! Я смотрю на это. ура
Показать ещё 2 комментария
Теги:
command-line
filesystemwatcher

2 ответа

3
Лучший ответ

Вам не хватает закрытия " для аргументов, попробуйте:

p.StartInfo.Arguments = @"/C dtexec/f ""C:\InboundWindow\ImportScript.dtsx""";

Смотрите здесь для использования двойных кавычек и @

  • 0
    Ваше редактирование сработало !! Спасибо Вам большое. С уважением, Майкл
1
 private void fileSystemWatcher1_Created(object sender, FileSystemEventArgs e)
    {


       // Process.Start("cmd", @"/C dtexec/f "C:\InboundWindow\ImportScript.dtsx");
        Process p = new Process();
        p.StartInfo.FileName = "ImportScript.dtsx"; //Since this is the name of the file that going to be started
        p.StartInfo.Arguments = @"/C dtexec/f "C:\InboundWindow\ImportScript.dtsx";
        p.StartInfo.RedirectStandardOutput = false;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.CreateNoWindow = false;  //don't show the console at all
        p.Start();


        // FullPath is the new file path.
        MessageBox.Show(string.Format("Created: {0} {1}", e.FullPath, e.ChangeType));


    }

Я заменил "FileName =" cmd.exe "на" ImportScript.dtsx ". Попробуйте это. :) Я не уверен на 100 процентов, но из того, что я вижу, что это неправильно. (Может быть, другие могут увидеть другую проблему, но хотя бы попробуй :))

  • 0
    спасибо за ваш быстрый ответ. я запустил выше и теперь получаю ошибку на p.Start (); System.ComponentModel.Win32Exception: 'Система не может найти указанный файл. который я сейчас рассматриваю почему. однажды Агин ура
  • 0
    Я не совсем уверен, что файл ".dtsx", но поддерживается ли он Windows? Таким образом, вы можете запустить формат файла, однажды, когда я создал приложение C #, я получил ту же ошибку, и позже показал, что я не могу запустить файл .jar из этой операционной системы (то есть Windows). Я не совсем уверен в вашем файле .dtsx, но, думаю, вам следует подождать другого ответа, чтобы выяснить это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню