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.

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" .


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.