MS-DOS traiter un fichier par blocs

Résolu/Fermé
xam3010 Messages postés 21 Date d'inscription vendredi 30 décembre 2011 Statut Membre Dernière intervention 10 janvier 2012 - 30 déc. 2011 à 09:43
xam3010 Messages postés 21 Date d'inscription vendredi 30 décembre 2011 Statut Membre Dernière intervention 10 janvier 2012 - 30 déc. 2011 à 10:37
Bonjour,

Je suis chargé de transcrire des scripts UNIX en MS-DOS et j'ai un problème.

Le script doit ejecter les bandes d'un robot TSM après sauvegarde, le problème c'est que seule 6 bandes peuvent être éjectées à la fois. Le script UNIX utilise la commande SPLIT (non disponible sou Windows).

Je récupère une liste de bandes à éjecter dans le fichier toto.list et ce que j'aimerai faire c'est :
Lancer l'ejection de 6 bandes
Afficher un message "Appuyez sur Enter quand les bandes ont été retirées"
Lancer l'ejection des 6 bandes suivantes
...

Sachant que :

- Une bande est désignée par un identifiant du type "L0......"
- Je peux éjecter 6 bandes à la fois
- le nombre de bandes à éjecter peut être différent à chaque fois.

Pour le moment mon ébauche de syntaxe est la suivante :

set temp= find /c "L0" toto.list
set nb_bandes=1+(%temp%/6)

FOR (i=1,i++,i=%nb_bandes%) do
(
FOR /F %%i in (toto.list) do (
# COMMANDE TSM d'ejection
)
echo "Appuyez sur Enter quand les bandes ont été retirées"
)


J'ai tenté de diviser le nombre total de bandes par 6 et ajouter 1 pour avoir le nombre de tours à faire mais c'est un peu bricolage et si il y a un nombre de bande qui est diviseur de 6 genre (6,12,18,24..), la boucle fera un tour pour rien..

J'espère avoir été clair..

Merci par avance !

A voir également:

2 réponses

dubcek Messages postés 18764 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 9 février 2025 5 624
30 déc. 2011 à 10:30
hello
ce script simule split.
il va couper le fichier bandes.txt en fichiers de 6 lignes appellé bandes-X.txt
@echo off

set /a c=0
set /a c2=0
setlocal enableDelayedExpansion
for /F "delims=" %%a in ('type bandes.txt') do (
	set /a x=!c! %% 6
	if !x! EQU 0 set /a c2+=1
	set nom=bandes-!c2!.txt
	echo %%a >> !nom!
	set /a c+=1
)
1
xam3010 Messages postés 21 Date d'inscription vendredi 30 décembre 2011 Statut Membre Dernière intervention 10 janvier 2012 5
30 déc. 2011 à 10:37
UN ENORRRME MERCI dubcek !!
Tu viens de me sortir de 3 jour de galère

Ca marche niquel et je peux appeler chaque fichier pour l'extraction.


Bon réveillon et encore merci
0