IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Données dans CSV et transformation. [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut Données dans CSV et transformation.
    Bonjour, je vous contactes parce que j'ai besoin d'aide !

    Voila j'ai créer un batch pour récuperer des données sur un poste (je vais déployer ce script sur tout les postes par la suite).

    Je récupère l'adresse MAC, le hostname, l'Os et la date sous cette forme.

    Adresse physique . . . . . . . . . . . : 2C-27-D7-1C-13-F2
    PT146-03
    Windows 7 Service Pack 1 32bits
    12/04/2013

    J'aurais besoin qu'il apparaisse sous la forme suivante:
    2C-27-D7-1C-13-F2,PT146-03, Windows 7 Service Pack 1 32bits
    12/04/2013

    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    
    cls
    
    ipconfig/all | findstr /C:"Adresse physique" > %%m
    for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . %%m') do if %%i equ 1 echo %%j > \\10.21.147.69\netlogon\fog\Host\machine\"%COMPUTERNAME%".csv
    
    echo %COMPUTERNAME% >> \\netlogon\fog\Host\machine\"%COMPUTERNAME%".csv
    
    set vwin= &set archi= &set sp=
    color 0A
    
    ver | find /i "version 6.1." > nul
    if %errorlevel%==0 set vwin=Windows 7
    ver | find /i "version 6.0." > nul
    if %errorlevel%==0 set vwin=Windows Vista
    ver | find /i "version 5.1." > nul
    if %errorlevel%==0 set vwin=Windows XP
    ver | find /i "version 5.2." > nul
    if %errorlevel%==0 set vwin=Windows 2003
    ver | find /i "Windows 2000" > nul
    if %errorlevel%==0 set vwin=Windows 2000
    ver | find /i "Windows NT" > nul
    if %errorlevel%==0 set vwin=Windows NT
    ver | find /i ">Windows ME" > nul
    if %errorlevel%==0 set vwin=Windows ME
    ver | find /i "Windows 98" > nul
    if %errorlevel%==0 set vwin=Windows 98
    ver | find /i "Windows 95" > nul
    if %errorlevel%==0 set vwin=Windows 95
    if %PROCESSOR_ARCHITECTURE%==AMD64 (set archi=64bits)
    if %PROCESSOR_ARCHITECTURE%==x86 (set archi=32bits)
    if defined PROCESSOR_ARCHITEW6432 (set archi=Processus 32 bits sur une plateforme 64 bits)
    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion >NUL 2>NUL || goto aftertest
    for /f "delims=: tokens=*" %%X in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion ^| find "Service Pack 3"') do set SP=3
    for /f "delims=: tokens=*" %%X in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion ^| find "Service Pack 2"') do set SP=2
    for /f "delims=: tokens=*" %%X in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion ^| find "Service Pack 1"') do set SP=1
    :aftertest
    if "%sp%"=="" (
    set typeOS=%vwin% %archi% without service pack
    goto end
    )
    set typeOS=%vwin% Service Pack %sp% %archi%
    :end
    
    echo %typeOS% >> \\netlogon\fog\Host\machine\"%COMPUTERNAME%".csv
    
    echo %date% >> \\netlogon\fog\Host\machine\"%COMPUTERNAME%".csv
    Mon autre problème vient de la suite ! Il faudrait que j'ajoute depuis mon poste admin, les résultats de tout les fichiers créer précédement dans un fichier CSV à la suite (pour les importer dans une base de données). Or toutes mes tentatives en powershell n'ont pas réussi !

    Forme du CSV:

    MAC Address (ie: 00:11:22:33:44:55)*,"Hostname*","IP Address","Description","Operating System ID","Image ID"

    Il faut juste que j'ajoute l'adresse mac, le hoste name, et le reste dans la description. Le reste ne m'étant pas utile pour l'instant.

    Si vous avez des idées, merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut
    J'ai vue qu'il existait get mac pour récuperer juste l'adresse MAC, mais mon problème c'est que j'ai parfois plusieurs cartes réseaux sur les ordinateurs et j'aurais besoin de récupérer seulement la première !

  3. #3
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    Citation Envoyé par renez75000 Voir le message
    J'aurais besoin qu'il apparaisse sous la forme suivante:
    2C-27-D7-1C-13-F2,PT146-03, Windows 7 Service Pack 1 32bits
    12/04/2013
    salut,

    Tu peux enregistrer tout dans des variables (avec des noms explicites pas comme dans l'exemple) et à la fin tu fais par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (echo %variable1%,%variable2%,%variable3%,%variable4%
    echo %date%)>>tonfichier.csv

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut
    Merci pour ton aide ! Désolé je viens seulement de revenir au travail pour tester tout ca !

    J'ai changer mon code avec ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "tokens=3 delims=," %%a in ('"getmac /v /fo csv | findstr Ethernet"') do echo "MAC Address (ie: %%a),""%COMPUTERNAME%"",""IP Address"",""%typeOS% %date%"",""Operating System ID"",""Image ID"""  >> \\Host\machine\"%COMPUTERNAME%".csv
    Je me retrouve bien avec ceci dans mon fichier .csv

    "MAC Address (ie: "2C-27-D7-1C-13-F2"),""PT146-03"",""IP Address"",""Windows 7 Service Pack 1 32bits 29/04/2013"",""Operating System ID"",""Image ID"""
    Le truc important c'est qu'il faudrait qu'il soit sous ce format obligatoirement:

    "MAC Address (ie: 00:11:22:33:44:55)*,""Hostname*"",""IP Address"",""Description"",""Operating System ID"",""Image ID"""
    Je dois en gros retirer les " " de l'adresse Mac et changer les - par des : et seulement pour l'adresse MAC (des postes se nommes aussi avec des -).

    J'ai essayé en batch et en powershell je n'arrives pas à isoler cette chaîne la (qui va biensur varié selon les postes !).

    Merci d'avance.

  5. #5
    Membre Expert
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Par défaut
    tu peux faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for /f "tokens=3 delims=," %%a in ('"getmac /v /fo csv | findstr Ethernet"') do set mac_address=%%a
    echo "MAC Address (ie: %mac_address::=-%), .../..

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 6
    Par défaut
    J'ai réussi à résoudre mon problème ! Il prend les - pour l'adresse mac.
    Merci pour ton aide

    Voici le code de mes deux bat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    
    cls
    
    del /s netlogon\fog\Host\machine\"%COMPUTERNAME%".csv
    
    set vwin= &set archi= &set sp=
    color 0A
    
    ver | find /i "version 6.1." > nul
    if %errorlevel%==0 set vwin=Windows 7
    ver | find /i "version 6.0." > nul
    if %errorlevel%==0 set vwin=Windows Vista
    ver | find /i "version 5.1." > nul
    if %errorlevel%==0 set vwin=Windows XP
    ver | find /i "version 5.2." > nul
    if %errorlevel%==0 set vwin=Windows 2003
    ver | find /i "Windows 2000" > nul
    if %errorlevel%==0 set vwin=Windows 2000
    ver | find /i "Windows NT" > nul
    if %errorlevel%==0 set vwin=Windows NT
    ver | find /i ">Windows ME" > nul
    if %errorlevel%==0 set vwin=Windows ME
    ver | find /i "Windows 98" > nul
    if %errorlevel%==0 set vwin=Windows 98
    ver | find /i "Windows 95" > nul
    if %errorlevel%==0 set vwin=Windows 95
    if %PROCESSOR_ARCHITECTURE%==AMD64 (set archi=64bits)
    if %PROCESSOR_ARCHITECTURE%==x86 (set archi=32bits)
    if defined PROCESSOR_ARCHITEW6432 (set archi=Processus 32 bits sur une plateforme 64 bits)
    reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion >NUL 2>NUL || goto aftertest
    for /f "delims=: tokens=*" %%X in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion ^| find "Service Pack 3"') do set SP=3
    for /f "delims=: tokens=*" %%X in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion ^| find "Service Pack 2"') do set SP=2
    for /f "delims=: tokens=*" %%X in ('reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v CSDversion ^| find "Service Pack 1"') do set SP=1
    :aftertest
    if "%sp%"=="" (
    set typeOS=%vwin% %archi% without service pack
    goto end
    )
    set typeOS=%vwin% Service Pack %sp% %archi%
    :end
    
    
    for /f "tokens=3 delims=," %%a in ('"getmac /v /fo csv | findstr Ethernet"') do echo %%a,"%COMPUTERNAME%","","%typeOS% %date%","","" >> netlogon\fog\Host\machine\"%COMPUTERNAME%".csv
    Ce script créer un fichier CSV pour chaque poste ou il est lancé avec la mac, le nom du poste, et ces caractéristiques.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    del /s netlogon\fog\Host\tmp\tmp.csv
    
    copy netlogon\fog\Host\machine\faire\*.csv netlogon\fog\Host\tmp\tmp.csv
    
    
    
    TYPE netlogon\fog\Host\tmp\tmp.csv | FIND /V "N/A" > netlogon\fog\Host\hostimport.csv
    L'autre importe tout les fichier CSV (situé dans le sous dossier faire) dans un seul (lancé depuis le serveur), en retirant les cartes ethernet N/A.

    Voila si ca peut aidé du monde pour importer des MACS dans un CSV !

    Merci encore pour ton aide minnesota !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/11/2006, 10h40
  2. Réponses: 3
    Dernier message: 26/04/2006, 11h52
  3. Importer des données format CSV dans BBD MySQL
    Par Taz_8626 dans le forum Administration
    Réponses: 1
    Dernier message: 04/04/2006, 14h16
  4. Sauvegarder les données dans un fichier CSV
    Par beb30 dans le forum MFC
    Réponses: 5
    Dernier message: 08/03/2006, 13h06
  5. Sauvegarde de données dans fichier csv
    Par issou dans le forum C
    Réponses: 1
    Dernier message: 22/12/2005, 08h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo