在浏览文本文件时,不应该抛出“已经打开的错误”

时间:2011-05-20 11:44:28

标签: vb.net visual-studio-2010

我在域计算机上运行了一些命令。我想在“更大的图片”中实际使用它之前测试它。当我运行它时,它返回它可以连接到的计算机的数据(现在没有管理员机器)。

但是,例如,如果我在其读取的txt文件中列出我的个人计算机两次,则表示文件已被使用并跳过我。

这是一个错误,因为它是同一台计算机吗?如果遇到副本,我希望能够继续编写副本。

Sub HandleInfo()
    'Declare Command
        Dim sCommand = "pushd \\*\C$ && whoami.exe >> C:\JavaInfo.txt && java.exe -version 2>> C:\JavaInfo.txt"
'declare File where Users are Located
        Dim strFile As String = "C:\TestDUsers.txt"
    'declare Lines in User.Txt File
        Dim strLines() As String = IO.File.ReadAllLines(strFile)
         For Each strUserName As String In strLines
        Dim ReplaceCommand As String = sCommand.Replace("*", strUserName)
        Shell("cmd.exe /c" & ReplaceCommand)
    Next

2 个答案:

答案 0 :(得分:1)

发生错误是因为javainfo.txt已经在使用中。

要确认相同,只需添加*到文件名。例如javainfo * .txt

如果确认从文件名中删除*并在shell函数中设置wait = true,那么代码将起作用

答案 1 :(得分:1)

将其更改为:

Shell("cmd.exe /c" & ReplaceCommand, AppWinStyle.Hide, True, -1)

这将使它等到命令执行完毕。 -1意味着它不会超时,它会永远等待,所以你可以根据自己的需要改变它。

更多信息:

http://msdn.microsoft.com/en-us/library/xe736fyk(v=vs.71).aspx?ppud=4

另外,我改变了:

 Dim sCommand = "pushd \\*\C$ && whoami.exe >> C:\JavaInfo.txt && java.exe -version 2>> C:\JavaInfo.txt"

对此,使用双引号,因为cmd字符串可以用空格搞笑。

Dim sCommand = """pushd \\*\C$ && whoami.exe >> C:\JavaInfo.txt && java.exe -version 2>> C:\JavaInfo.txt"""