【问题标题】:vb.net Cannot find file specified ""C:\Users""vb.net 找不到指定的文件 ""C:\Users""
【发布时间】:2014-06-17 20:25:52
【问题描述】:

我想要做的是,当我单击 button2 时,它会运行一个 cmd 命令,即

attrib +s +h "Path here",但它说找不到指定的“此处的路径”

这是我的代码:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    If NotHidden.SelectedIndex >= 0 Then
        LogsKeeper.Text = LogsKeeper.Text + TimeOfDay + " | " + "Moved To Hidden: " + NotHidden.SelectedItem.ToString + vbNewLine
        Hidden.Items.Add(NotHidden.SelectedItem)
        Dim path As String = NotHidden.SelectedItem
        My.Settings.TempPath = path
        Process.Start("cmd /C " + "attrib +s +h " + My.Settings.TempPath)
        NotHidden.Items.Remove(NotHidden.SelectedItem)
        WriteTextToLogs()
        MsgBox("Folder is hidden now. if you want to delete it then you need to move it to NotHidden first ")
        HiddenFolders.Text = HiddenFolders.Text + NotHidden.SelectedItem + vbNewLine
        My.Settings.HiddenFolders = HiddenFolders.Text
        My.Settings.Save()
    Else
        MsgBox("You need to select a path first")
    End If
End Sub

以及如何将文件夹添加到隐藏的列表框:

Private Sub AddFolder()
    If SecretFolderPath.Text.Length > 0 Then
        SecretFolderPath.Text = """" + SecretFolderPath.Text + """"
        LogsKeeper.Text = LogsKeeper.Text + TimeOfDay + " | " + SecretFolderPath.Text + vbNewLine
        My.Settings.Logs = LogsKeeper.Text
        My.Settings.Save()
        LogsKeeper.Text = My.Settings.Logs
        Logs.Items.Clear()
        NotHidden.Items.Add(SecretFolderPath.Text)
        For Each line As String In LogsKeeper.Lines
            Logs.Items.Add(line)
        Next
        SecretFolderPath.Clear()
        MsgBox("Folder Added!")
    Else
        MsgBox("Folder path is not correct ")
    End If
End Sub

我需要执行命令:attrib +s +h "Path here",但它说它可以找到指定的文件 ""Path here"",我需要双单引号来运行命令。

【问题讨论】:

  • 你为什么要使用 Shell 来摆弄属性? System.File.IO 中有非常好的 GetAttributesSetAttributes 方法,VB.FileSystem 中还有其他方法
  • 那你想告诉我什么?

标签: vb.net shell path cmd command


【解决方案1】:

这更复杂,但绝对可以解决问题:

Dim p As Process = New Process()
Dim pi As ProcessStartInfo = New ProcessStartInfo()
pi.Arguments = " /C attrib +s +h " + My.Settings.TempPath
pi.FileName = "cmd.exe"
p.StartInfo = pi
p.Start()

【讨论】:

  • 不,那是错的。第一个不是命令,第二个是。第二个命令必须是 attrib +s +h "Path to folder here" 但它给出了一个错误。是的,我在路径之前和之后都有"
  • @user3588568 我已经更新了我的答案,我应该知道不会有一个简单的方法:)
  • 嘿,谢谢你的回答。但是有没有办法完全隐藏cmd?
  • 添加行pi.WindowStyle = ProcessWindowStyle.Minimized,如果这行不通,可能pi.CreateNoWindow = true
猜你喜欢
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 2022-08-07
相关资源
最近更新 更多