[BATCH] Fichier initialisation ?

Fichier initialisation ? [BATCH] - Shell/Batch - Programmation

Marsh Posté le 05-05-2003 à 23:11:20    

Salut,  
J'ai créé sous MS-DOS un batch de transfert de fichiers. Lorsqu'on lance le batch la 1ère fois, il faut insérer 2 arguments: le répertoire source et le répertoire destination. Je souhaiterais alors garder source et destination définitivement, sauf quand je veux les modifier.  
Solutions ?  
-> Utiliser variables d'environnement (SET...) mais ce n'est que temporaire.  
-> Insérer SET dans autoexec.bat mais fichier inexistant sous WindowsXP.  
-> Créer un fichier d'initialisation (.ini) mais comment reprendre une ligne de texte (source ou destination) dans ce fichier et le lier au .bat (FIND inexistant sur dernière version DOS) ?  
-> Autre... ?  
Je souhaiterais ainsi que tout utilisateur puisse lancer mon .bat sans source et destination les fois suivantes, sans rien modifier sur sa machine.  
Comment faire ?
 
Merci d'avance ;)
 

Reply

Marsh Posté le 05-05-2003 à 23:11:20   

Reply

Marsh Posté le 06-05-2003 à 10:08:34    

les données passés en paramètres sont stockées dans %1, %2 %3 etc.
 
donc tu fais un batch de ce style :

if exist %1 goto param
ta_commande rep_source rep_destination
goto fin
 
:param
if not exist %2 goto erreur
ta_commande %1 %2
goto fin
 
:erreur
echo si vous spécifiez le rep source,
echo vous devez aussi spécifier le repertoire destination
 
:fin


N.B., je n'ai pas testé, et je ne me rappelle plus si dans le batch tu dois doubler les % pour les paramètres.
 
A+


Message édité par JPA le 06-05-2003 à 10:09:52
Reply

Marsh Posté le 06-05-2003 à 10:11:06    

Lorogima a écrit :

Salut,  
J'ai créé sous MS-DOS un batch de transfert de fichiers. Lorsqu'on lance le batch la 1ère fois, il faut insérer 2 arguments: le répertoire source et le répertoire destination. Je souhaiterais alors garder source et destination définitivement, sauf quand je veux les modifier.  
Solutions ?  
-> Utiliser variables d'environnement (SET...) mais ce n'est que temporaire.  
-> Insérer SET dans autoexec.bat mais fichier inexistant sous WindowsXP.  
-> Créer un fichier d'initialisation (.ini) mais comment reprendre une ligne de texte (source ou destination) dans ce fichier et le lier au .bat (FIND inexistant sur dernière version DOS) ?  
-> Autre... ?  
Je souhaiterais ainsi que tout utilisateur puisse lancer mon .bat sans source et destination les fois suivantes, sans rien modifier sur sa machine.  
Comment faire ?
 
Merci d'avance ;)
 
 


 
 
si seulement tu travaillais pas sur un OS aussi Minable :-D
 
sous unix ou mieux encore sous linux pour utiliser du soft libre et qui plus est gratuit, c'est d'uns simplicité effrayante...
 
mais kro$oft c'est pas possible de faire ça en batch en effet leur shell (DOS) n'est pas assez souple d'une part, ni complet d'autre part. :fou:


---------------
I love vi editor. it's the best one.
Reply

Marsh Posté le 06-05-2003 à 10:41:09    

Mais si c'est possible, en détournant l'utilisation habituelle des commandes du DOS...
Je vais compléter mon exemple en créant des fichiers de paramétrage :
si il n'y a pas de paramètres, on utilise les paramètres stockés dans un fichier
si il y a des paramètres, on crée (ou modifie) deux fichiers contenant ces paramètres
 


if exist %1 goto param  
if not exist c:\_param1.bat goto erreur2
call c:\_param1.bat
call c:\_param2.bat
 
ta_commande %param1% %param2%       remarque ou %%param1%% ...à tester  
goto fin  
 
:param  
if not exist %2 goto erreur  
echo set param1=%1>c:\_param1.bat
echo set param2=%2>c:\_param2.bat
call c:\_param1.bat
call c:\_param2.bat
 
ta_commande %1 %2  
goto fin  
 
:erreur  
echo si vous spécifiez le rep source,  
echo vous devez aussi spécifier le repertoire destination  
goto fin
 
:erreur2
echo les fichiers d'initialisation n'ont pas été créés
echo veuillez saisir la commande sous la forme
echo commande répertoire_source répertoire_destination
 
:fin  


 
Celà nécessite que tous les utilisateurs aient le droit d'écrire sous c:\
sinon, il faut modifier le script
 
A+
 
P.S. j'ai écrit celà de tête, sans tester
 
edit : correction d'erreur +  
Attention : dans les paramètres les noms de répertoire ne doivent pas contenir d'espace ou être saisis entre "" (ex : "C:\mes documents" )


Message édité par JPA le 06-05-2003 à 10:43:11
Reply

Marsh Posté le 06-05-2003 à 10:47:59    

vimaster a écrit :


 
 
si seulement tu travaillais pas sur un OS aussi Minable :-D
 
sous unix ou mieux encore sous linux pour utiliser du soft libre et qui plus est gratuit, c'est d'uns simplicité effrayante...
 
mais kro$oft c'est pas possible de faire ça en batch en effet leur shell (DOS) n'est pas assez souple d'une part, ni complet d'autre part. :fou:  


Troll minable spotted.


---------------
Le site de ma maman
Reply

Marsh Posté le 06-05-2003 à 12:46:31    

Merci pour les réponses. La création des fichiers source.bat et destination.bat m'est très utile (et c'est con que je n'ai pas pensé à un truc aussi simple...)
 
Pour ce qui est du shell Unix (ou Linux), je sais qu'on peut le faire rapidement mais je n'ai pas envie de l'installer sur le PC que j'utilise régulièrement. Je continuerai en effet à utiliser Windows tant qu'il n'y aura pas plus de produits (applications, drivers, jeux, ...) développés pour Linux.
Et je n'ai pas envie d'installer Linux de base et Windows par-dessus, c'est un brol à monter à chaque formatage du PC ;)

Reply

Marsh Posté le 06-05-2003 à 14:03:56    

C'est pas si simple que celà, et je n'ai ce genre de réflexe que depuis que j'ai une bonne expérience des fichiers batch.
 
je te conseille ce site anglais, il y a plein d'exemples super astucieux.
http://www.robvanderwoude.com/index.html
 
En ce qui concerne Linux, tu peux te contenter de cygwin qui te permet d'exécuter des programmes shell Unix sur du Windows. Mais dans ton cas, ce serait lourd, car il te faudrait l'installer sur toutes les machines où ton script va s'exécuter.
 
A+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed