2011-08-31 6 views
2

Je suis en train d'utiliser Windows intégré dans le script shell pour charger ce fichier:Shell Windows Script pour charger csv dans les variables

hostname1,host_specific_file1 
hostname2,host_specific_file2 
hostname3,host_specific_file3 
. 
. 
. 

Comme ceci:

for /f "tokens=1,2* delims=," %%i in (host-info.txt) do set clientName=%%i; set fileLoc=%%j 

Ce qui ne fonctionne pas, mais Je veux que cela se passe comme suit:

:loop 
For each line, Set the current_hostname=hostnamex and Set the current_file=host_specific_filex 
And THEN 
DO STUFF 
Goto next line, Goto loop 

Existe-t-il une méthode pour cela? Je n'arrive pas à faire envelopper mon script autour du concept "Goto next line" ou "Gérer une ligne à la fois".

Merci, Chris

+0

Avez-vous envisagé d'utiliser Powershell? Il y a une bonne commande Import-Csv, et une belle commande For-Each-Object qui est destinée à la boucle comme ça. –

Répondre

3

Vous pouvez;

echo off 
setlocal enabledelayedexpansion 

for /f "tokens=1,2* delims=," %%i in (host-info.txt) do (
    set clientName=%%i 
    set fileLoc=%%j 
    call:handler 
) 
goto:eof 

:handler 
    echo client name is !clientName! location is !fileLoc! 
goto:eof 

Ou Utilisation de la notation% n;

echo off 
setlocal enabledelayedexpansion 

for /f "tokens=1,2* delims=," %%i in (host-info.txt) do call:handler %%i %%j 
goto:eof 

:handler 
    echo client name is %1 location is %2 ... 
Questions connexes