Se connecter / S'enregistrer
Votre question

[Batch] quelques questions ....

Tags :
  • Batch
  • Programmation
Dernière réponse : dans Programmation
22 Janvier 2006 20:58:19

Alors voila j'ai quelque question dans le domaine du batch.

Esque batch sait réfléchir ?? :-D
Exemple : esque je peu dire à l'ordi ou à DOS (je sais pas a qui m'adresser :-D ) de choisir tout seulm au hasard un nombre entre 1 et 30 ou un ombre parmis les nombre que j'aurais déjà spécifié.

Batch sait couper mais esqu'il sais découper ?
Bon batch sais couper un fichier pour le coller dans un autre reprtoir mais esqu'il sais découper un fichier en 2 ou plus ??

Autres pages sur : batch questions

a b L Programmation
22 Janvier 2006 21:21:29

1. oui, il y a une variable d'environnement %RANDOM% qui retourne un nombre aléatoire compris entre 0 et 32767.
donc si tu veux entre 0 et 30, il faut que ton nombre aléatoire soit divisé par 32767 et multiplié par 30. Soit:
[code]set /A val=%RANDOM% / 1092[code]
(30 ne sera jamais tiré), il faut mettre 1057 = 32767 / 31 si tu veux le 30 tirable.

2. ben en fait ça j'avais cherché, j'avais pas trouvé. J'avais réussi à faire l'inverse: recoller des fichiers découpés. Si tu trouves une astuce ça m'intéresse ;-)

EDIT: En cherchant (j'ai pas trouvé), j'ai vu qu'on pouvait recoller les fichier avec copy et des "+" (j'avais utilisé les redirections). malheureusement ce n'est que pour la lecture, on ne peut pas spécifier plusieurs fichiers cible
22 Janvier 2006 22:06:16

Ah c'est interessant sa pour recoller les fichiers !!
Mais quel est exactement l'effet produit les 2 fichier réunis sa donne quoi :-?

Merci
Contenus similaires
a b L Programmation
22 Janvier 2006 22:28:24

avec copy, je sais pas.
moi je faisais TYPE fichier >> fichier_recolle
et ça copie tout même pour des fichiers binaires.
mais copy c'est certainement plus sûr car on peut préciser que le fichier est binaire avec /B.
22 Janvier 2006 23:55:34

Oui mais att si tu rassemble 2 fichiers mp3 sa fait quoi ??
Un fichier mp3 avec les 2 chansons qui se suivent ??
Ou un fichier mp3 avec les 2 chasons qui sont jouée en parallèle en clair un remix de fou :-D

Ah et peut etre que j'ai déjà posé cette question mais : comment faire pour compter les lignes d'un fichier texte ?? Et comment faire pour rechercher et effacer un charactère dans une chaine ....

(et si le caractère à supprimer est le premier charactère de la ligne sa aiderais sa cerait pas plus facil ou tout simplement réalisable?)
a b L Programmation
23 Janvier 2006 00:09:42

Bon ça dépend des formats des fichiers. Normalement avec toutes les compressions du type MPEG, ça doit marcher.
Mais c'est surtout utile quand on a coupé un fichier en morceaux pour le recoller :-D

Pour compter, tu peux lire le fichier avec un FOR et mettre un compteur qui fait +1 à chaque ligne.
pour la recherche de début, tu coupe la variable avec %var:~0,10%
après tu reformes ta chaine: set resultat=debut_a_remplacer%var:~10%
et tu enregistres dans un nouveau fichier.
23 Janvier 2006 03:35:15

toujours en batch : ya t'il une commande qui permet de lancer le plein ecran ... ?

merci d'avance .
23 Janvier 2006 08:58:06

Oui c'est possible :
start /max explorer (cet exemple ca lancera poste de travail en plein ecran)

Voila @+
23 Janvier 2006 19:21:46

Oui le truc du "+1" avec un "for" j'y avait pensé mais je voulais savoir si il n y avait pas une méthode moin ... barbare ^^.

je ne comprend pas trop le "%var:~0,10%" traduit sa donne quoi ?? Sa te découpe la chaine de caractère en 10 morceaux ... ?? Si c'est le cas après comment tu isole le premier morceaux ?

Eux ... c'est possible de voir le code binaire d'un fichier grace à un fichier batch biensur :-? ?
24 Janvier 2006 19:18:10

Cricky ..... :-(
a b L Programmation
24 Janvier 2006 21:54:21

C'est vrai que pour le for c'est pas terrible, mais je vois rien de mieux.

pour le ~dans le var, c'est décrit dans le help set.
ça coupe une variable en prenant un certain nombre de caractères.
si VAR=azerty

%VAR:~0,3%=aze
%VAR:~0,4%=azer
%VAR:~3,1%=r

Le premier chiffre est l'index où commencer à couper, et le 2ème est le nombre de caractères à prendre à partir de l'index.

qu'entends-tu par voir le fichier binaire ?

EDIT: fait un simple up, des fois, je zappe des messages parce que au bout d'un moment, ils ne sont plus marqués comme non lu ;-)
24 Janvier 2006 22:19:46

Bon j'ai pensais à une methode pour couper un fichier mais sa marche pas !! :-(

Le truc c'était de récupéré le code du fichier ligne par ligne et de le copier ligne par ligne ... c'est pour sa que je voulais compter le nombre de ligne : on prend le nombre total de ligne puis on le divise en 3 pour faire 3 partie on dis au batch que lorsqu'il atteint une chaine avec le nombre .... devant il commence une autre partie.

Tout sa est faisble mais le problem est que lorsque je récupère la 1er ligne elle fait plus de 255 charactère et donc le batch ne supporte pas et ferme l'execution ... il faudrait trouver comment découper la chaine en plusieurs parties avant meme de l'avoir récupéré.

Mais je ne suis meme pas sur qu'en récupérant juste le code sa marchera quand meme .... c'est à testé ;-)
a b L Programmation
25 Janvier 2006 13:12:13

oui, le problème se pose surtout pour les fichiers binaires qui risquent de se présenter sur une seule ligne dans tout le fichier.
25 Janvier 2006 13:21:27

et tu ne peux pas traiter le fichier carctère par caractère ?
25 Janvier 2006 14:01:38

:-o Un fichier binaire c'est sur une seul ligne :-o

Et bien en faite je ne sais pas mais je ne pense pas que l'on puisse traiter caractère par caractère avant d'avoir récupéré toute la ligne ...

C'est justement sa le problem que avant d'avoir récupéré au moin la première ligne on ne peu pas agir dessus. A ma connaissance on peut pas découper une ligne en plusieurs parties pour que chaque partie soit traité séparément avant d'avoir récupéré toute la chaine ....

(mais bon sa c'est à cricky de nous le dire :-D )
a b L Programmation
25 Janvier 2006 19:32:50

un fichier texte et un fichier binaire, c'est la même chose. Dans un fichier texte, le retour à la ligne correcpond à un octet précis.
Dans un fichier qui n'est pas texte comme par exemple un .mp, tu as autant de chance de voir passer un caractère de fin de ligne qu'un autre caractère.
Je ne dis pas qu'il n'y en a pas, mais on ne peut pas prédire s'il y en aura 0, 1, 15, 1000...

La seule chose que je vois qui pourrait marcher c'est de couper un flux de redirection. Avec le MORE, le problème est qu'il rajoute une ligne de texte pour chaque page et qu'il faut attendre la fin pour la redirection.
La seule chose que je vois c'est faire un programme. Alors on peut utiliser DEBUG pour programmer en assembleur ou langage machine, créer un .com temporaire et l'exécuter. Mais bon, à ce niveau, autant faire un vrai programme :-D
25 Janvier 2006 20:03:07

héhé si on passe du batch à l'assembleur ..... :-D

Tien je ne connaissais pas cette commande "more" elle à l'air intéressante ..... je vais me pencher dessus pour voir ce qu'on peu faire avec .....

Hum c'est pas très clair l'explication : Affiche les sorties écran par écran ... :-?
a b L Programmation
25 Janvier 2006 22:50:26

en fait à la base le more permet d'afficher n'importe quoi à l'écran page par page:
dir |more
unScript paramètres| more

26 Janvier 2006 00:40:45

Par page ..... et une page sa fait combien de ligne ?? Car si on arrive à lui dire d'afficher tant de ligne que l'on redirige vers un fichier alors c'est bon normalement on arrivera à découper notre foichier ....
26 Janvier 2006 18:27:18

Up pour cricky :-D
a b L Programmation
26 Janvier 2006 19:33:13

Je suppose qu'un page c'est environ 25 lignes (plutôt 24) puisque le mode texte usuel est 80x25 caractères.
Mais si la ligne dépasse 80 caractères, ça prendra plusieurs lignes donc on pourrait se dire que c'est bien, sauf que la difficulté est de rediriger les pages dans des fichiers différents et de supprimer la ligne qui s'affiche à l'écran (le "--- suite ---")
26 Janvier 2006 20:49:06

hum hum tu pourrais me mettre un exemple d'utilisation de la commande "more" que je voi ce que sa donne car la je suis un peu largué ...... :-?
a b L Programmation
27 Janvier 2006 00:26:04

ça s'utilise comme TYPE qui affiche le contenu d'un fichier:
  1. more toto.txt

s'il y a plus de 25 lignes dans toto.txt, ça s'affichera page par page: l'utilisateur doit appuyer sur une touche pour voir la page suivante.
27 Janvier 2006 21:32:50

Chez moi sa marche pas ! :-(

J'ai fais exactement "more toto.txt"
dans le fichier toto.txt il y a 49 lignes et chaque ligne porte son nombre exemple :

1
2
3
4
5
etc ....

Et donc chez moi rien ne s'affiche !!
:-o
28 Janvier 2006 10:49:32

Up pour Cricky :-D
a b L Programmation
28 Janvier 2006 11:59:26

Ben moi ça marche:

  1. FOR /L %%i in (0,1,100) do echo Ligne %%i >> toto.dat
  2. more toto.dat
28 Janvier 2006 14:05:58

Oula !! attend c'est quoi ce "for" qui apparait ??
a b L Programmation
28 Janvier 2006 14:41:47

c'est juste pour remplir le fichier toto.dat de:
  1. Ligne 1
  2. Ligne 2
  3. Ligne 3
  4. Ligne 4
  5. Ligne 5
  6. Ligne 6
  7. Ligne 7
  8. Ligne 8
  9. ... (jusqu'à 100)

29 Janvier 2006 14:00:55

A oué je savais pas que l'on pouvais faire sa !! Comme quoi batch à encore beaucoup de secret !! :-D

Bon donc maintenant mon problem est : ne connaissant pas le nombre de caractère d'une variable si je fait une découpe comme tu m'a montré mais bon comme je ne connais pas le nombre de caractère je vais mettre par exemple : 1000 comme sa je suis sur qu'il n y aura pas de caractère oublié !! Mais si ma variable possède - de 1000 caractère sa fera une erreur ?? :-?

Ah et je voulais savoir si tu n'avais pas une astuce pour créer un nombre de variable par exemple :

  1. echo . entrez un nombre
  2. set /P var=
  3. rem le nombre mis )par l'utilisateur créera autant de variable .......


je sais pas si tu vois ..... ou plustot esque tu saurais comme au lieu d'effacer une varible on ajoute un caractère.
par exemple un truc du genre :

  1. set var=s
  2. set var=a
  3. rem dans ce cas sa donnera : "var=s" et moi je veu que sa fasse : "var=sa"

Tu vois comment je peux faire ?

Merci
a b L Programmation
29 Janvier 2006 16:36:38

Pour la découpe, je sais pas faire, j'ai pas réussit, je pense pas qu'on puisse faire grand chose avec more, puisque si on redirige, ça prend tout le fichier.
Donc, là je sais pas lol

sinon pour les variable c'est facile.
Pour concaténer 2 caractères:
  1. set var1=s
  2. set var2=a
  3. set var=%var1%%var2%


Et pour générer des variable le mieux eest de faire:
  1. set NB=12
  2. for /L %%i in (1,1,%NB%) do set v%%i=%%i

Il suffit d'utiliser la variable de la boucle dans le nom de ta nouvelle variable.
Au final tu auras:
  1. set v1=1
  2. set v2=2
  3. set v3=3
  4. set v4=4
  5. set v5=5
  6. set v6=6
  7. set v7=7
  8. set v8=8
  9. set v9=9
  10. set v10=10
  11. set v11=11
  12. set v12=12
1 Février 2006 16:26:13

Bon voila j'ai toujours des problems :
voici un code :

  1. set var=azerty
  2. set /A nbr=0
  3. set /A nbr0=1
  4. :plus_1
  5. set /A nbr1=%nbr%+1
  6. set /A nbr2=%nbr1%+1
  7. echo %var:~%nbr1%,%nbr2%%>>test.txt
  8. goto plus_1


Dans ce code il y a 2 problem !! Le problem majeur étant que le code ne marche pas !

Ce que je voulais faire c'est récupérer tout les caractère de la chaine 1 à 1 mais ne connaissant pas pas le nombre de caractère ! Donc j'ai essayé de faire avancer de 1 en 1 les caractère à prendre puis de les stocker mais sa ne marche pas :-(

Comment je peux faire ?
a b L Programmation
1 Février 2006 19:24:48

Vu que le % est un caractère de contrôle et que l'analyse sémantique du batch est un peu pourrie, je doute que tu puisse faire ça comme ça.
Et je ne vois pas comment tu pourrais faire ça.
1 Février 2006 19:25:40

Bon au lieu de demander chaque petit truc je vou dit mon little projet. Bon pendant mon temps perdus je m'amuse à créer divers programme (si on peux appeller sa comme sa) et après avoir créer unemultitude de petit script j'essaye de créerun programme qui "crypt" une chaine de caractère !!

Rien de très spécial j'essaye juste de remplacer un caractère "a" par, par exemple "z45x8df35f" le problem est que une fois ayant la chaine à crypter sous une variable je ne sais pas comment la découper caractère par caractère ......... pour remplacer les caractère :-(
a b L Programmation
1 Février 2006 20:31:30

Tu en demande trop au batch ;-)
En plus comme on vois le code du barch, ben c'est pas sécurisé du tout, car il suffit de récupérer le programme de cryptage pour décrypter ;-)
1 Février 2006 21:56:45

lol et oui mais très peu de gens save que batch est compilable :-o

Euhh mais quesque tu dis :-o
lol oui j'ai trouvé un pti logiciel qui transforme mes batch en "exe" et tout est mega crypté enfin c'est compilé quoi. Le seul problem est que mon fichier de 8Ko en "bat" fait 124 en "exe" donc voila quoi .

Mais c'est assez pratique quand meme!

Et oui c'est vrai que batch n'est pas super puissant mais à mon avis tout le monde le sous éstime !! C'est un langage qui grace à sa simplicité devien très puissant lorsque l'on sait comment l'utiliser :twisted:
a b L Programmation
1 Février 2006 22:21:14

le batch en exe, je connais pas je doute que le comportement soit le même (compilé au lieu d'interprété). Et surtout ça n'a rien à voir, seule la syntaxe est la même.

sinon tu peux programmer en assembleur, voire langage machine et utiliser la commande DEBUG pour exécuter ce code.

Mais bon dans les 2 cas, c'est pas vraiment programmer en baatch dans le sens de manipuler des commandes DOS.

ça ne vaut quand même pas le python :-P
2 Février 2006 08:08:07

Tout le monde me parle de ce python qui est apparement le grand frère de batch !! Esqu'il garde quand meme une partie de la simplicité du batch ??

Un moment je voulais me mettre au python alors tout content je pars à la recherche de commande mais la surprise il faut que je télécharge des logciels .... de plus lors de la recherche de la commande copy rien trouvé :-( donc je suis resté sur mon pti batch dont j'avais encore quelques ressources à exploiter :twisted:
2 Février 2006 19:40:15

Bon voici la question du moment :

Comment récupéré chaque caractère 1 à 1 avec batch ?

J'accepte toute les proposition barbare ou non .... :-D
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS