[R] Récuperer une variable dans le fichier .txt

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
flech
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 03 août 2012 14:31
Status : Hors ligne

[R] Récuperer une variable dans le fichier .txt

#1

Message par flech »

Bonjour,
Je suis novice en script. :roll:
Voici un bout du script qui ne fonctionne pas.
Le but est de récupérer une variable dans un fichier .txt.
Il n'y a qu'un caractère dans le fichier.
Merci d'avance

Code : Tout sélectionner

$file_dhcp = FileOpen("c:\dhcp.txt", 0)
$dhcp = FileReadLine($file_dhcp, 1)
MsgBox(0, "DHCP", $dhcp)
$dhcp = StringSplit($dhcp,"")
MsgBox(0, "DHCP", $dhcp)
$dhcp = $dhcp[0]
MsgBox(0, "DHCP", $dhcp) 
Je n'ai pas de code erreur.
Modifié en dernier par flech le lun. 06 août 2012 10:01, modifié 2 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: Récuperer une variable dans le fichier .txt

#2

Message par timmalos »

Lorsque vous avez créé votre sujet, des règles de présentation etaient énoncées.
Vous ne les respectez pas, merci d’éditer votre message car lorsque le prochain modérateur passera par ici, votre message ira droit à la poubelle.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#3

Message par mikell »

Je passe par ici et ça roule :mrgreen:

Pourquoi pas tout simplement

Code : Tout sélectionner

MsgBox(0, "DHCP", FileRead("c:\dhcp.txt"))
Mais il faut être sûr que le fichier ne contient pas aussi un caractère invisible, on peut le vérifier par exemple en faisant ça

Code : Tout sélectionner

MsgBox(0, "DHCP", "==" & FileRead("c:\dhcp.txt") & "==")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
flech
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 03 août 2012 14:31
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#4

Message par flech »

Pardon, les MsgBox était juste pour vérifier l'état de la variable.
Je doit récupérer dans une variable le caractère, car derrière je fais une boucle if avec.
Merci et désolé pour le manque de précision.

Voici le script dans la globalité

Code : Tout sélectionner

#NoTrayIcon
Local $cmd,$User,$Password,$dhcp,$file_dhcp

$User = "toto"
$Password = "toto"
$dhcp = "0"

$cmd = 'netsh interface ip show address | find /C "Oui" > c:\dhcp.txt'
RunAs($User,$Domain,$Password,1,@ComSpec & " /c " & $cmd,"c:\",@SW_HIDE)

WinWaitActive("")
Sleep(1000)

$file_dhcp = FileOpen("c:\dhcp.txt", 0)
$dhcp = FileReadLine($file_dhcp, 1)
$dhcp = StringSplit($dhcp,"")
$dhcp = $dhcp[0]
;MsgBox(0, "DHCP", $dhcp)

If  $dhcp = 0 Then
    $cmd = 'netsh interface ip set address "Connexion au réseau local" dhcp'
    RunAs($User,$Domain,$Password,1,@ComSpec & " /c " & $cmd,"c:\",@SW_HIDE)

    $cmd = 'netsh interface ip set dns "Connexion au réseau local" dhcp'
    RunAs($User,$Domain,$Password,1,@ComSpec & " /c " & $cmd,"c:\",@SW_HIDE)
else
    
    MsgBox(0, "DHCP", "Adresse déjà en DHCP")
    
EndIf
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#5

Message par Tlem »

flech a écrit :Le but est de récupérer une variable dans un fichier .txt.
Je pense que votre script est conçu pour bien autre chose que la simple récupération d'une variable !!! :roll:

En lisant votre dernier code, j'y vois plusieurs interrogations.

1 - L'option 'find /C' n'affichera que le nombre d'interface en DHCP mais ne récupèrera par le nom de celle-ci.

2 - Sur la base du 1°, vous supposez que l'interface réseau s'appelle "Connexion au réseau local", mais qui vous dit qu'elle n'a pas été renommée ...

3 - Après lecture de votre code, il me semble que le but est de mettre l'interface principale en DHCP, mais pourquoi donc ne pas la gérer directement ?

4 - Avez-vous pensez aux interfaces fantôme telle celles des machines virtuelles ?

Bref, comme cous le voyez, il existe des tas de questions et problèmes possibles. Définissez un peut mieux les besoins et nous vous orienterons vers une solution plus universelle. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#6

Message par TopXm »

Hello :)

Pour imager les propos du boss (non non ce n'est pas de la lèche ...)
[spoiler="Marchera pô]Image[/spoiler]

Et ceux de Mikell dans l'élan (en plus du Wait pour éviter le Sleep):
► Afficher le texteFileRead suffit
flech
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 03 août 2012 14:31
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#7

Message par flech »

Effectivement le but est de passer des machines en ip statique en dhcp.
J'ai environ 40 machines dans ce cas...
Il n'y a pas d'autre interface que la local, sinon un autre pipe avec find "Connexion au réseau Local".

J'ai des machines sous xp et seven, le reste du sript fonctionne, si je peux récupérer la variable.
Un master est passer sur les machines elles sont toutes idems.
Si le dhcp est activé variable 1 dans le fichier ou 0 si pas activé.
J'utilise le runas pour les droit admin.

Voila ce que je peux dire!!!
Merci pour le coup de pouce
Avatar du membre
TopXm
Niveau 6
Niveau 6
Messages : 260
Enregistré le : mer. 25 mai 2011 16:37
Localisation : Usa
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#8

Message par TopXm »

Re,
Ben du coup le FileRead proposé par Mikell plus haut devrait faire l'affaire non ?
flech a écrit :J'utilise le runas pour les droit admin
Oui oui j'avais bien compris. C'est au Wait que je faisais allusion donc voir RunAsWait plutôt qu'un Sleep ;)

Sinon ce message pourrait aussi être intéressant
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#9

Message par Tlem »

Puisque les machines sont identiques et que visiblement l'utilisateur ne peut pas renommer l'interface, dans ce cas pourquoi vous prendre la tête à contrôler si le PC est en DHCP ...

Vous connaissez le nom de l'interface, donc lancez directement les deux commandes NetSh. Si la machine est déjà en DHCP, cela n'aura aucun effet !!! 8)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
flech
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 03 août 2012 14:31
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#10

Message par flech »

Je suis stagiaire et mon chef souhaite faire un test avant de lancer ou pas la mise en dhcp des ip.

Et merci pour Runaswait, j'avais pas vu :P

Les commandes FileRead et FileReadLine ne retourne rien, d'où mon problème!!!
je les utilise peut être mal, mais je n'ai pas d'erreur.

Je voulais passer directement par des variables, mais comment récupérer une variable en utilisant des commandes DOS.

Enfin merci à tous.

Je suis Breton donc têtu, je vais finir par trouver!!!!!
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#11

Message par Tlem »

Test ou pas test, le script que vous voulez utiliser a pour but de passer une machine en DHCP si jamais elle ne l'est pas !
Donc l’emploi des deux commandes NetSh directement sans test reviendra strictement au même.

Breton ou pas, cela ne sert à rien d'être borné, un peut de réflexion amène souvent de la simplicité. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
flech
Niveau 1
Niveau 1
Messages : 5
Enregistré le : ven. 03 août 2012 14:31
Status : Hors ligne

Re: [..] Récuperer une variable dans le fichier .txt

#12

Message par flech »

Je suis d'accord avec toi Tlem, mais on me demande un test je le fait.
J'ai trouvé le problème, c'était le chemin du fichier qui posait des soucis pour l'ouverture sur la racine.
Voici le résultat, et encore merci à tous

Code : Tout sélectionner

#NoTrayIcon
Local $cmd,$User,$Password,$Domain,$dhcp,$file_dhcp

$User = "Admin"
$Password = "Toto"
$Domain = "Tata"
$dhcp = "0"
$file_dhcp = "c:\TEMP\dhcp.txt"
$cmd = 'netsh interface ip show address | find /C "Oui" > ' & $file_dhcp

RunAsWait($User,$Domain,$Password,1,@ComSpec & " /c " & $cmd,"c:\",@SW_HIDE)

$dhcp = FileReadLine($file_dhcp, 1)
$dhcp = StringSplit($dhcp, "")
$dhcp = $dhcp[1]

;MsgBox(0, "Etat dhcp", $dhcp)

If  $dhcp = 0 Then
    $cmd = 'netsh interface ip set address "Connexion au réseau local" dhcp'
    RunAsWait($User,$Domain,$Password,1,@ComSpec & " /c " & $cmd,"c:\",@SW_HIDE)

    $cmd = 'netsh interface ip set dns "Connexion au réseau local" dhcp'
    RunAs($User,$Domain,$Password,1,@ComSpec & " /c " & $cmd,"c:\",@SW_HIDE)
else
    ;MsgBox(0, "DHCP", "Adresse déjà en DHCP")
EndIf
 
Répondre