我在域计算机上运行了一些命令。我想在“更大的图片”中实际使用它之前测试它。当我运行它时,它返回它可以连接到的计算机的数据(现在没有管理员机器)。
但是,例如,如果我在其读取的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
答案 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"""