Batch + fichier initialisation

Fermé
Loma - 5 mai 2003 à 00:20
ipl Messages postés 5723 Date d'inscription lundi 8 octobre 2001 Statut Contributeur sécurité Dernière intervention 14 avril 2012 - 6 mai 2003 à 14:40
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.

Merci d'avance ;)
A voir également:

3 réponses

ipl Messages postés 5723 Date d'inscription lundi 8 octobre 2001 Statut Contributeur sécurité Dernière intervention 14 avril 2012 585
6 mai 2003 à 00:04
Bonjour loma, bonjour à tous,

Tiens, il y a quelqu'un sur le forum divers qui se demande à quoi peut bien servir le Dos...

Je ne te cacherai pas que je ne travaille pas en Dos tous les jours alors il a fallu chercher loin dans ma mémoire (presque une psychanalyse) !

Voila une première proposition en espérant que çà raffraîchira la mémoire des anciens ;-)
Fais un fichier .bat qui prendra les paramètres s'il y en a et qqc dans le batch si pas de paramètres... je veux dire :

-----fichier batch.bat-----
@echo off
if %1.==. goto suite
if %2.==. goto err2
echo copy %1 %2>batch2.bat
copy deb.bat+batch2.bat+fin.bat batch.bat
batch.bat

:suite
rem etc. (deb.bat)
rem -----
copy org dest
rem -----
rem etc. (fin.bat)
goto fin
:err2
echo SVP relancer batch origine destin.
goto fin

:fin



Bon, explications :
- tu fais un fichier batch.bat (c'est le fichier ci-dessus complété par tes commandes à la place des rem etc.) ; çà c'est ton premier fichier qui, tu l'as compris va être refabriqué lorsqu'il y aura changement de paramètres (de répertoires)
- tu fais un fichier deb.bat qui est le début du fichier batch.bat jusqu'à et y compris les lignes rem etc. (deb.bat) & rem -----
- tu fais un fichier fin.bat qui est la fin du fichier batch.bat à partir des lignes rem ----- & rem etc. (fin.bat)
- le fichier batch lui-même te fabriquera, si tu changes tes répertoires, un fichier batch2.bat qui sera constitué de la seule ligne copy répert.-d-origine répert.-de-destination

Je ne vois pas d'autre manière en Dos pur !
- Je pense que la commande
copy deb.bat+batch2.bat+fin.bat batch.bat
existe toujours.
- je pense que le système te laissera lancer le fichier lui-même batch.bat sinon, goto fin et relancer.
Cà peut sûrement être amélioré ! ;-)



@12C4 ... In medio stat virtus ...
Ipl
0
Merci pour la réponse !
J'ai eu une solution sur un autre forum qui est aussi intéressante (et même vachement simple, c con que je n'y ai pas pensé avant... lol) :

echo set source=%1 > copy_source.bat
echo set destination=%2 > copy_destination.bat
call copy_source.bat
call copy_destination.bat

En effectuant biensûr des tests sur l'existence de %1, %2, copy_source.bat et copy_destination.bat afin de savoir si on a besoin d'indiquer les arguments suivant la commande.

;)
0
ipl Messages postés 5723 Date d'inscription lundi 8 octobre 2001 Statut Contributeur sécurité Dernière intervention 14 avril 2012 585
6 mai 2003 à 14:40
Bonjour Loma,

Cette solution ressemble beaucoup à la mienne ! la mienne est plus complète ; celle-ci comporte une erreur (je ne sais pas ce que tu mets dans %1 mais s'il s'agit d'un répertoire, çà va planter !) !

@12C4 ... In medio stat virtus ...
Ipl
0