如何顺序执行两个命令

时间:2018-05-20 12:54:55

标签: vb.net

Private Sub btnUnHide_Click(sender As Object, e As EventArgs) Handles btnUnHide.Click
    Dim path As String
    fdbUnHide.ShowDialog()
    path = fdbUnHide.SelectedPath
    RunCommandCom(path)
End Sub



Shared Sub RunCommandCom(path As String)
    Dim unhide As String = "attrib -r -s -h /s /d"
    Try
        Shell("cmd.exe /C cd " & path)
        Shell("cmd.exe /C" & unhide)         
End Sub

我也试过用“&”但是没有用?

     Shell("cmd.exe /C cd " & path "& " & unhide)

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

以下是取消隐藏.net中文件夹和文件

的方法
Dim t As New System.IO.FileInfo(path)
t.Attributes = t.Attributes And Not FileAttributes.Hidden

For Each fn As String in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories) 

    t = New System.IO.FileInfo(fn)
    t.Attributes = t.Attributes And Not FileAttributes.Hidden

Next

属性是按位标志。您将要在顶部导入system.io。

答案 1 :(得分:1)

  

注意:此答案解决了问题中提到的问题,但它肯定不是取消隐藏文件夹及其文件的最佳方法。

     

最佳和推荐方法在Ctznkane525's answer中进行了描述。

您当前代码的问题在于您在&符号(&)之前缺少空格。

此:

"cmd.exe /C cd " & path & "& " & unhide

基本上变成了:

"cmd.exe /C cd C:\your\path& attrib -r -s -h /s /d"

......使&成为路径的一部分。您需要在它之前添加一个空格:

"cmd.exe /C cd " & path & " & " & unhide

虽然请注意Shell()是VB6时代的过时功能,不应该使用。当“执行commads”(或更正确地说:启动进程)时,您应该使用Process.Start() method

Process.Start("cmd.exe", "/C cd " & path & " & " & unhide)