Vb.net 这难道不应该抛出一个“错误”吗;“已打开错误”;在浏览文本文件时

Vb.net 这难道不应该抛出一个“错误”吗;“已打开错误”;在浏览文本文件时,vb.net,visual-studio-2010,Vb.net,Visual Studio 2010,我正在域计算机上运行一些命令。我想在我真正在“更大的图景”中使用它之前对它进行测试。当我运行它时,它会返回它可以连接到的计算机的数据(现在没有管理机器) 但例如,如果我在它读取的txt文件中列出我的个人计算机两次,它会说该文件已经被使用,并跳过我 这是一个错误,因为它是同一台计算机吗?我希望它能够继续写,如果它遇到一个副本 Sub-HandleInfo() '声明命令 Dim sCommand=“pushd\\\*\C$&&whoami.exe>>C:\JavaInfo.txt&&java.ex

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

但例如,如果我在它读取的txt文件中列出我的个人计算机两次,它会说该文件已经被使用,并跳过我

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

Sub-HandleInfo()
'声明命令
Dim sCommand=“pushd\\\*\C$&&whoami.exe>>C:\JavaInfo.txt&&java.exe-version 2>>C:\JavaInfo.txt”
'声明用户所在的文件
Dim strFile As String=“C:\TestDUsers.txt”
'在User.Txt文件中声明行
Dim strLines()作为String=IO.File.ReadAllLines(strFile)
对于strLines中作为字符串的每个strUserName
Dim ReplaceCommand作为字符串=sCommand.Replace(“*”,strUserName)
Shell(“cmd.exe/c”&ReplaceCommand)
下一个

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

要确认相同,只需在文件名中添加*即可。e、 g.javainfo*.txt

如果已确认从文件名中删除*并在shell函数中设置wait=true,则代码将正常工作

将其更改为:

Shell("cmd.exe /c" & ReplaceCommand, AppWinStyle.Hide, True, -1)
这将使它等待命令执行完毕。-1表示它不会超时,它将永远等待,因此您可以根据自己的意愿进行更改

更多信息:

另外,我会改变:

 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"""

什么是scommand请附加更多代码添加到javainfo.txt会为每个域用户创建一个文本文件?我希望他们都在一个,可以让它写在同一个文件中的副本,如果需要的话。正如我提到的,一旦它被确认文件创建,你可以删除*步骤1确认文件正在通过添加*创建。步骤2删除*并将shell命令的wait参数设置为true.Bingo。上面提到的双引号把东西传遍了整个地方。但是,在设置为true且没有超时的过程中,某个地方发生了一些事情,使它发出了咔哒声。现在我在文本文件和窗口中获得了可理解的输出。请查看字符串。格式化字符串也可以,而不是使用替换@哈珀89。这正是我提到的。将wait添加到shell命令。