Comment lire chaque champ d'une ligne via un fichier batch

0

J'ai un fichier dont le contenu est comme suit

 Testing:TEST1
 --- Import
 --- Build
 Testing:TEST2
 --- Import
 --- Build
 Testing:TEST3
 --- Import
 --- Build
Summary: Tests: 3 Failures:1

Je dois obtenir les chiffres 3 et 1.

Spinman
la source

Réponses:

2

Utilisez-vous Windows> = 2000 pour cela? Si tel est le cas, en supposant que les données se trouvent dans un fichier nommé "dump.txt", vous pouvez essayer de créer un fichier de traitement par lots ("foo.bat") contenant ce code:

@ECHO OFF
FOR /F "tokens=1,3,5 delims=: " %%A IN (dump.txt) DO (
   IF "%%A"=="Summary" echo %%B %%C
)

Le fichier de commandes (foo.bat) et le fichier de données (dump.txt) doivent se trouver dans le même dossier.

Plus d'informations sur l'utilisation de "FOR / F" .

danicotra
la source
Soigné. Beaucoup plus court que ma solution;)
DavidPostill
@ DavidPostill: Vous me honorez. Merci pour l'appréciation, je vous respecte :-)
danicotra
0

J'ai besoin des chiffres 3 et 1

Utilisez la commande de lot suivante (test.cmd):

@echo off
setlocal
setlocal EnableDelayedExpansion
for /f "tokens=* skip=2" %%i in ('find "Summary" %1') do  (
  set _line=%%i
  for /f "tokens=3,4" %%j in ("!_line!") do (
    set _tests=%%j
    set _temp=%%k
    set _fails=!_temp:~-1!
    echo Number of tests: !_tests!
    echo Number of fails: !_fails!
    )
  )

Usage:

test File

Où:

  • Fichier est le fichier de données ( %1)

Exemple:

F:\test>type test.txt
Testing:TEST1
 --- Import
 --- Build
 Testing:TEST2
 --- Import
 --- Build
 Testing:TEST3
 --- Import
 --- Build
Summary: Tests: 3 Failures:1

F:\test>test test.txt
Number of tests: 3
Number of fails: 1

Lectures complémentaires

DavidPostill
la source