Batch: Affichage d'une ligne

soca -  
caiman2 Messages postés 1489 Statut Membre -
Bonjour,

Je suis en train de préparer un petit batch de test réseau pour mon entreprise, pour aider mes collègues en cas de panne.

Je suis bloqué: il faudrait que la fenêtre affiche la première ligne d'un fichier Resultat.doc.. Je peux afficher le contenu du fichier complet, met je ne m'en sors pas pour n'afficher que la ligne 1.
Mes recherches n'ont pas été très bénéfique, car je tombe régulièrement sur des boucles qui ne sont pas adaptées à mon problème.

Merci de votre aide.

9 réponses

  1. caiman2 Messages postés 1489 Statut Membre 313
     
    Bonjour,

    Sous quel langage votre batch , commande DOS ?
    0
  2. caiman2 Messages postés 1489 Statut Membre 313
     
    Un fichier doc ce n'est pas facile a analyser , c'est plein de caracteres inutiles.
    Il faut plutot un fichier.txt .
    Il me faudrait le detail de ce fichier texte , voir quel type de caracteres on rencontres en debut de lignes , si votre premiere ligne est particuliere ...

    Dieu a t'il créé le cerveau ou est-ce l'inverse ?
    Heureux les simples d'esprit parce que le royaume des cieux leur appartient.
    0
  3. soca
     
    Je vais changer pour un fichier .txt, si ça peut aider.
    La première ligne est "Envoi d'une requete ping sur xxx.xxx.xxx.xxx avec 32 octets de données". Les accents apparaissent mal sur cette ligne ( peut-être un probleme UNICODE / UTF8 avec Word...)

    En fait mon but ultime serait de récupérer l'IP de cette première ligne et d'afficher "Le matériel portant l'IP xxx.xxx.xxx.xxx est en cause" dans la fentre du batch.

    Est-ce possible?
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. caiman2 Messages postés 1489 Statut Membre 313
     
    Attendez , je cherche un programme que j'ai fais en vbscript pour recuperer l'IP local d'un PC et faire une action particuliere en fonction de cette IP.
    0
    1. caiman2 Messages postés 1489 Statut Membre 313
       
      'Script pour connaitre IP machine et remettre non a zéro Proxy
      '© 2009 Philippe ROYER

      '*************** FONCTIONS ****************************************
      Function GetIP()
      Dim ws : Set ws = CreateObject("WScript.Shell")
      Dim fso : Set fso = CreateObject("Scripting.FileSystemObject")
      Dim TmpFile : TmpFile = fso.GetSpecialFolder(2) & "/ip.txt"
      Dim ThisLine, IP(10), Mask, NbIP, i, FlagGetIP, IP2
      FlagGetIP = "0"
      NbIP = 0
      'IP(1) = "0"
      ' MASK = "0"

      If ws.Environment("SYSTEM")("OS") = "" Then
      ws.run "winipcfg /batch " & TmpFile, 0, True
      Else
      ws.run "%comspec% /c ipconfig > " & TmpFile, 0, True
      End If
      With fso.GetFile(TmpFile).OpenAsTextStream
      Do While NOT .AtEndOfStream
      ThisLine = .ReadLine
      If InStr(ThisLine, "Adresse") <> 0 or InStr(ThisLine, "Address") <> 0 Then
      ' wscript.echo Left( Mid(ThisLine, InStr(ThisLine, ":") + 2),1 )
      If Left (Mid (ThisLine, InStr(ThisLine, ":") + 2),1 ) <> 0 Then
      NbIP = NbIP + 1
      IP(NbIP) = Mid(ThisLine, InStr(ThisLine, ":") + 2)
      End If
      End If
      ' wscript.echo Mid(ThisLine, InStr(ThisLine, ":") + 2)
      Loop
      .Close
      End With
      'WinXP (NT? 2K?) leaves a carriage return at the end of line
      For i = 1 to NbIP
      If IP(i) <> "" Then
      If Asc(Right(IP(i), 1)) = 13 Then IP(i) = Left(IP(i), Len(IP(i)) - 1)
      End If
      ' wscript.echo "IP trouvé: " & IP(i)
      IP2 = split(IP(i),".",4)
      If IP2(0)& "." & IP2(1) = "172.20" or IP2(0)& "." & IP2(1) = "10.52" Then
      FlagGetIP = "1"
      End If
      Next
      ' msgbox ("IP PC = " & IP2(0)& "." & IP2(1) & "." & IP2(2) & "." & IP2(3))
      ' wscript.echo FlagGetIP
      GetIP = FlagGetIP
      fso.GetFile(TmpFile).Delete
      Set fso = Nothing
      Set ws = Nothing
      End Function

      Function GetIPAddress
      ' This function retrieves the IP Address from the registry
      ' It gets it from the CurrentControlSet, so even when using DHCP
      ' it returns the correct IP Address

      ' Declare variables
      Dim key
      Dim cTempIPAddress
      Dim cIPAddress
      Dim cIPAddressKey

      Set oSh = CreateObject("WScript.Shell")

      cInterfacesKey="HKLM\SYSTEM\CurrentControlSet\Services\TCPIP\Parameters\Interfaces\"
      cNICSearch="HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards\13\ServiceName"

      ' First check which network card to use
      cNicServiceName=oSh.RegRead(cNICSearch)

      ' Now read the IP Address from that card
      cIPAddressKey=cInterfaceskey + cNicServiceName+"\DhcpIPAddress"
      cTempIPAddress=oSh.RegRead (cIPAddresskey)

      ' Split the items in the var tempIPAddress to the octets in array IPAddress
      ' MsgBox (cTempIPAddress)
      cIPAddress=split (cTempIPAddress,".",4)
      ' MsgBox (cipaddress)
      ' the IP addresss is now readable from ipaddress
      ' for example, to read the first octet, use: FirstOctet=IPAddress(0)

      GetIPAddress=cIPAddress
      End Function


      Function GetIPOctet (nOctet)
      ' This function retrieves a given octet out of the IP Address
      Dim IPAddress

      IPAddress=GetIPAddress
      GetIPOctet=IPAddress(nOctet-1)
      End Function
      ' *****
      ' ******************** FIN FONCTIONS ********************************************

      on error resume next

      Message = "Script pour tester IP du PC" & vbCr
      Message = Message & "Si IP # 10.52, 172.20" & vbCr
      Message = Message & "alors supprimer Proxy" & vbCr & vbCr
      Message = Message & "Continue?"

      'X = MsgBox(Message, vbYesNoCancel, "Notice")
      'vbOK 1 L'utilisateur a cliqué sur OK.
      'vbCancel 2 L'utilisateur a cliqué sur Annuler.
      'vbAbort 3 L'utilisateur a cliqué sur Abandon.
      'vbRetry 4 L'utilisateur a cliqué sur Réessayer.'
      'vbIgnore 5 L'utilisateur a cliqué sur Ignorer.
      'vbYes 6 L'utilisateur a cliqué sur Oui.
      'vbNo 7 L'utilisateur a cliqué sur Non.

      'If X = 6 Then

      '******* IP adress venant de fonction GetIP() ****
      Dim LANIP
      LANIP = GetIP()
      '******* Fin IP venant de fonction GetIP() ****




      Set WshNetwork = WScript.CreateObject("WScript.Network")
      Message = "Computer Name: " & WshNetwork.ComputerName & vbcr
      Message = Message & "User Name: " & WshNetwork.UserName & vbcr
      Message = Message & "User Domain: " & WshNetwork.UserDomain & vbcr

      Set objSysInfo = CreateObject("ADSystemInfo")
      ' Message = "User name: " & objSysInfo.UserName & vbcr
      ' Message = Message & "Computer name: " & objSysInfo.ComputerName & vbcr
      ' Message = Message & "Site name: " & objSysInfo.SiteName & vbcr
      ' Message = Message & "Domain short name: " & objSysInfo.DomainShortName & vbcr
      ' Message = Message & "Domain DNS name: " & objSysInfo.DomainDNSName & vbcr
      ' Message = Message & "Forest DNS name: " & objSysInfo.ForestDNSName & vbcr
      ' Message = Message & "Schema role owner: " & objSysInfo.SchemaRoleOwner & vbcr
      ' Message = Message & "Domain is in native mode: " & objSysInfo.IsNativeMode & vbcr
      ' Wscript.echo Message

      ' strPDCNamebrut = split (objSysInfo.SchemaRoleOwner,",",8)
      ' strPDCName = split (strPDCNameBrut(1),"=",2)
      ' Message = Message & vbcr & "PDC Name: " & strPDCName(1) & vbcr & vbcr

      Set WSHShell = WScript.CreateObject("WScript.Shell")

      p1 = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\"
      ' Wscript.Echo "Etat ProxyEnable avant: " & WSHShell.RegRead (p1 & "ProxyEnable")

      If LANIP = "1" Then
      WSHShell.Regwrite p1 & "ProxyEnable", 1 , "REG_DWORD"
      WSHShell.Regwrite p1 & "ProxyServer", "172.20.1.30:80" , "REG_SZ"
      WSHShell.Regwrite p1 & "ProxyOverride", "<local>" , "REG_SZ"
      ' MsgBox("Mise à jour Proxy ? ",vbyesno,"Mise à jour")
      ' If Z = 6 Then
      ' MsgBox("Vous avez cliqué Oui , mise à jour effective !!!")
      ' End If
      Else
      WSHShell.Regwrite p1 & "ProxyEnable", 0 , "REG_DWORD"
      WSHShell.RegDelete p1 & "ProxyServer"
      WSHShell.RegDelete p1 & "ProxyOverride"
      End If
      0
  6. caiman2 Messages postés 1489 Statut Membre 313
     
    Si je me souviens bien j'avais essayé de le concevoir en commande DOS , et j'avais fini par laisser tomber trop pauvre comme langage et pourtant c'etait une de mes specialités.
    0
  7. soca
     
    Merci pour vos réponses.

    Malheureusement, les commandes dos sont mon seul espoir. En effet, le parc est infogéré et extrêmement sécurisé. Je ne peux rien installé sur les postes.

    Au cas où, un peu plus de détails:
    Les @IP pingées (qui devront être affichées) commencent toutes par le même nombre.
    0
    1. caiman2 Messages postés 1489 Statut Membre 313
       
      Ok , je regarde si je peux trouver la solution miracle.
      0
  8. caiman2 Messages postés 1489 Statut Membre 313
     
    Ca peut ressembler a cela:
    for /F "skip= 7 tokens=2,3,4 delims=." %i IN (fichier.txt) do echo 172.%i %j %k

    172 correspond au premier nombre IP
    Skip pour le nombre de ligne a ignorer en debut de fichier si votre fichier.txt est fait de plusieurs reponses ping.
    0
  9. caiman2 Messages postés 1489 Statut Membre 313
     
    au fait pourquoi un programme VBS vous gêne, il s'execute comme un bat sur n'importe quel PC sur xp ?
    Il n'y a rien à installer sur ces PC
    0