2014-02-25 3 views
0

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

При нажатии кнопки папка создается в определенном месте (установка в графическом интерфейсе). Мне нужна эта папка для скрытия, так что даже если пользователь нажмет кнопку «Просмотреть скрытые элементы», они не будут уметь видеть эту папку. Я пробовал это сделать:

  Dim di As DirectoryInfo 

     di = Directory.CreateDirectory(path) 'path is a variable with the location 

     di.Attributes = FileAttributes.System 
     di.Attributes = FileAttributes.Hidden 

Это, однако, не работает. В качестве альтернативы, я создал папку с помощью приложения и выполняется следующий код в CMD строке:

attrib +s +h D:\Documents\FolderName 

Это работает, то он скрывает папку, даже если просматривать скрытые элементы проверяется.

Что я хочу знать, как я могу открыть подсказку cmd из моего приложения, ради аргумента, когда нажата кнопка создания папки, и выполните этот код в командной строке? Я попытался с помощью

process.start("cmd.exe", "attrib +s +h D:\Documents\FolderName")

, но это не работает. Он просто открывает приглашение cmd с каталогом, установленным как папка для отладки приложений.

Мой вопрос в том, как я могу выполнить свои операторы командной строки из своего приложения VB.NET и после выполнения операторов закрыть приглашение cmd? Я подумал о добавлении нового проекта «Консольное приложение» в мое решение, но у меня нет опыта работы с ним.

Любая помощь была бы принята с благодарностью.

Спасибо.

+1

Вы назначаете два раза атрибуты, сначала присваиваете системный атрибут, а затем вы заменяете системный атрибут на скрытый атрибут. Имейте в виду, что свойство заменяет существующие атрибуты, а не добавляет или удаляет, поэтому используйте его надлежащим образом. – ElektroStudios

+0

Кроме того, CMD ожидает переключатель (/ C |/K), чтобы указать аргументы команды. – ElektroStudios

ответ

2

Вам не нужно выполнять attrib (что, кстати, можно сделать, полагаясь на класс Process), просто для использования права собственности Attributes. Образец кода:

Dim di As DirectoryInfo = New DirectoryInfo(Path) 
di.Create() 
di.Attributes = FileAttributes.System Or FileAttributes.Hidden 
+0

Спасибо, это сработало :) – KavirM

+0

@KavirM ​​добро пожаловать. – varocarbas

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