Bonjour à tous !
Est-il possible de programme un script sous dos effectuant le traitement suivant :
- premièrement
Lire un fichier texte contenant des informations telles que :
"
nom_A1=nom_B2
nom_A2=nom_B2
nom_A3=nom_B3
"
. ..
- Deuxiemment
Pour chaque ligne, regarder s´il existe un fichier nommé nom_A1 et s´il existe le renommer nom_B1
- Dernièrement
Si on a effectuer l´action précédente alors déplacer le fichier nom_B1 vers un autre repertoire.
Je saurais le faire sans aucun problème ( exceptés les eternelles erreurs de compilations incompréhensibles dues à des configurations obscures) en C... Mais d´une part je n´ai pas super envie d´installer un compilateur sur cet ordi et puis j´ai aussi envie d´apprendre à developper sur dos si jamais cela est possible. ( je connais un peu la programmation shell, mais je n´ai jamais rien fait sur windows).
![]()
le batch MS-DOS n´est PAS un langage de programmation.
tu peut bien sur faire ce que tu veux sous dos, mais il te faut un autre langage avec son compilo ( djgpp, tc++ qb, etc.)
Esuite, tu peut programmer qqch sur n´importe querl PC, le compilé et puis le mettre sur le PC que tu veux ( s´il ont la ême architecture et le même processeur) donc pas besoin d´installer un compilo sur ton autre PC.
Bon finalement je vais le faire en c++...
J´ai décidé de lire dans le fichier en utilisant les entrées sorties avec les classes de la famille iostream.h . ..
Jai un truc comme ça pour récuperer des entiers :
fichier > > nb1 > > nb2
Comment je peux faire pour récuperer des chaines de caractères ?
Mon fichier . txt contient :
chaine
chaine2
chaine3
J´ai essayé de faire à l´ancienne char tab[][50]
et fichier > > tab[0] > > tab[1] . .. mais ça merde : il n´y a rien dedans !
tu lis pareil avec fichier > > Text1 > > Text 2
et dasn ton fichier tu fait :
Nom1 Nom2
Nom3 Nom4
plutot que Nom1=Nom2
etc...
par contre, utilise sois des nom dos court soit des guilemet autour des chane ( mais je ne sais pas si ça marche ne C++)
jai des problemes de type on dirait...
avec des entier ça marche :
int nb ;
fichier > > nb ;
cout < < nb ;
" 12" ;
Mais avec des chaines de caractères jai essayé :
char ch* = new char[50] ;
fichier < < ch ;
cout < < ch ;
= n´affiche rien
Si tu es sous XP, l´instruction for...in ( ) do permet de parcourir des résultats de commandes. Avec " type [fichier]" dans ton script tu pourrais lire toutes les lignes, essayer de séparer les noms du =, etc...
Mais je peux pas t´en dire plus, suis pas sous Win.
Oh et au passage, pour quelqu´un qu´a eu son DUT, tu me sembles mal renseigné : pour ce genre d´opérations on utilise des langages de scripts comme Python ou Perl, très prisés sous Unix, mais existant également pour Windows. Ils te permettraient de faire ça en 15 lignes.
Qu´est ce qu´on branle en dut ?
Tu as raison quand tu signales que je suis mal informé... En effet, je n´ai jamais rien développé sur windows et c´est pour ça que je me demandais si cet OS était pourvu d´un langage de script... Malheureusement dos a l´air bien limité, tant pis.
J´ai décidé de faire le programme en C finalement. Je n´ai aucun problème avec l´algorithme, masi c´est plus au sujet de la syntaxe que je galère...
Euh j´étais un peu sur les nerfs, d´où la forme, mais c´était plus ironique.
Courageux de le faire en C. Non Windows n´est pas vraiment pourvu d´un langage de script correct. En fait, si : DOS a assez évolué depuis XP, et il y´a les WSH. Mais tous deux sont moins efficaces que les langages que j´ai cité plus haut.
Z´utilisiez quoi en DUT ?
On developpait toujours ( sauf chez nous
sous Unix. En première année on a appris le C++ et le cobol ( plus bases de données, SQL, architechtures des ordis, réseaux)... En fin d´année on a réalisé qq scripts shell ( c´est donc pour ça que je me suis imaginé que sur windows on pouvait faire un utilitaire de ce genre). En seconde année, on apprend le java en quelques mois et puis la programmation web en étudiant le php comme langage dynamique...
Un bon petit programme. En ce qui me concerne, j´ai seulement des lacunes en ce qui concerne windows... Je n´ai jamais rien développé dessus ( à part un site php mais bon) alors questions compilateurs ou logiciels de programmation jsuis pas calé. A l´iut, c´était compilation en mode console et codage sur nedit ( editeur de texte banal)
wsh c´est le windows scripting host ?
si oui, avec tu peut ( je parle à jomeo) " programmé" ou scripter en VBS ou JS qui sont 2 langages somme toute assez performant pour manipuler des fichiers ou des truc comme ça.
En tout cas, largement suffisent pour ce que tu veux faire, mais ça n´a rien a voir avec DOS.
Pour les utiliser c´esttout simple, tu fait un fichier texte dasn lequel tu mets ton code et tu le renomme en . vbs et c´est bon.
merci mais maintenant jsuis parti avec mon c++.
J´ai un problème, le fichier contient ça :
salut
hello
ca va
Jaimerai lire trois chaines, mais il en compte 4 ! En effet l´espace de la troisième ligne compte pour un séparateur... Tu vois ce que je peux faire ?
P.S. : je parcours en faisant
while(fic_r.eof())
{
_ _ _ fic_r > > ch ;
_ _ _ . ..
}
oui, je vois le problème, mais je ne connait pas la réponse ( je ne fait pas d´entrée sortie en c).
Essaye en mettant des guillemet autour de ton texte, c´est comme ça qu´on fait en basic.
Ou peut-être qu´il y a une fonction qui lit une ligne entière ( comme il y en a une autre que cin pour lire toute la ligne ( mais je ne me souviens pas de son nom)).
cin.getline(destination, nb_char_max, ´\n´) ;
Nouvelle question :
peut-on renommer un fichier en c++ avec l´objet ifstream ?
J´ai trouvé deux moyens ( pas encore appliqués) :
soit j´utilise la fonction system("") et je fait un REN classique de dos...
soit je crée un fichier vide du nouveau nom en copiant toutes les données octet par octet... Je pense que je ne vais pas opter par la seconde solution.
Il y a peut etre des fonctions liées aux fichiers comme sur linux ( fonction primitives) . ..
J´ai réussi à faire mon programme en C++... Mon compilateur ne connait apparement pas la classe string et comme je n´ai pas eu envie de la telecharger sur le net je me suis bien galéré ! !
Je l´ai fait car quand on joue sur internet à unreal tournament 2004 sur une map que l´on ne possède pas dans le repertoire UT2004\Maps, le fichier est telechargé dans un repertoire UT2004\Cache et se voit donné un nom unique ( genre de chaine alphanumérique d´une vingtaine de caractères). Le fichier texte cache.ini contient les vrais noms des maps :
" A4565456FFjhggjg654=babydie.ut2" par exemple !
Comme la map ne se trouve pas vraiment dans le repertoire maps, je l´ai telechargée mais je ne peux y jouer tout seul chez moi sans l´avoir renommée et déplacée dans le bon repertoire ! C´est pour ça que j´ai concu ce programme ! !! Juste pour que cela soit fait automatiquement ! !!
je suis un gros feignant... Mais on dit toujours que si l´homme n´avait pas été feignant il n´aurait pas inventé la roue ( ni les fonctions en programmation d´ailleurs
) !
Je mettrai le code source en ligne sur mon site prochainement et vous pourrez me dire comment l´optimiser ( utilisation de la fonction system() pour le renommage et le déplacement des fichiers
et puis d´autres traitements codés alors que des fonctions existent peut etre déjà).
Ciao bonne nuit
J´ai toujours entendu dire que l´informatique avait été inventée par des feignants pour se faciliter la vie.
Mais dans la pratique, et je pense que personne ne me contradira, les programmeurs passent souvent plus de temps à concevoirs des programmes qu´à les utiliser et donc à se faciliter la vie.
oué stuveux faire du script faut y aller en python ( http://www.python.org ) c´est simple, ´rapide´ et puissant, pour le Perl je sais po moi aussi j´apprend
yoda
ça c´est sûr, et aussi pas mal de temps a debugger des fois... ![]()
Pour moi, le débuggage fait partie de la conception. Et puis ce n´est pas " des fois", mais " souvent" qu´il faut dire !
![]()