Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Batch Msdos 5

17 réponses
Avatar
Laddy
Bonjour =E0 tous,
je ne suis pas dans la bonne section mais je n'arrive pas =E0 envoyer un
message sur news://msnews.microsoft.com/microsoft.public.fr.scripting

J'ai un soucis avec un batch que j'ai fait pour un ami.
Il n'arrive pas =E0 l'executer sous un vrai ms-dos 5.
Apparemment il ne prend pas en compte la variable %chemin%, sauriez
vous me dire pourquoi ? Comment puis-je r=E9soudre ce probl=E8me ?

J'ai test=E9 mon code sous FreeDos et il fonctionne pourtant.

Je ne trouve pas de solution, aidez moi

Merci
Laddy

@echo off

:: script Laddy

::ouvre le dossier C:\Perso avant l'executation
CD C:\Perso

::saisie le fichier avec son extension uniquement
set /p chemin=3DNom de votre fichier avec extension :
::affiche le contenu du fichier
type "%chemin%"
Set /p choix=3D Souhaitez vous ajouter du texte ? [o,n] =3D
if /i %choix%=3D=3Do goto ajouter
if /i %choix%=3D=3Dn goto fin
:ajouter
::ajoute du txt au fichier existant
type con >> %chemin%
pause
:fin
@exit

si jamais voici l'autoexec.bat

@echo off
PATH C:\WINDOWS;C:\DOS
SET TEMP=3DC:\DOS
KEYB FR,,C:\DOS\KEYBOARD.SYS
C:\WINDOWS\mouse.COM /Y
lh mscdex.exe/d:mscd001
C:\WINDOWS\SMARTDRV.EXE
rem tree
rem dir *.bat

et

config.sys:
DEVICE=3DC:\DOS\SETVER.EXE
DEVICE=3DC:\WINDOWS\HIMEM.SYS
DOS=3DHIGH
FILES=3D30
DEVICEHIGH=3Dc:\drivers\OAKCDROM.SYS/D:MSCD001
device=3Dc:\drivers\usbaspi.sys
device=3Dc:\drivers\di1000dd.sys
lastdrive=3Dz
device=3Dc:\dos\ansi.sys
DEVICE=3DC:\WINDOWS\SMARTDRV.EXE /DOUBLE_BUFFER
DEVICE=3DC:\WINDOWS\IFSHLP.SYS
STACKS=3D9,256

10 réponses

1 2
Avatar
Laurent Jumet
Hello Laddy !

Laddy wrote:

J'ai un soucis avec un batch que j'ai fait pour un ami.
Il n'arrive pas à l'executer sous un vrai ms-dos 5.
Apparemment il ne prend pas en compte la variable %chemin%, sauriez
vous me dire pourquoi ? Comment puis-je résoudre ce problème ?
J'ai testé mon code sous FreeDos et il fonctionne pourtant.
Je ne trouve pas de solution, aidez moi



Dans mes souvenirs MS-DOS, "chemin" n'existait pas, c'était "PATH".

Et le paramètre "/P" est apparu après, dans la commande "SET /P".

Mais il est difficile de se remémorer avec précision la version 5 de MS-DOS.

--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]
Avatar
Laddy
On 26 juin, 10:25, "Laurent Jumet"
wrote:
Hello Laddy !

Laddy wrote:
> J'ai un soucis avec un batch que j'ai fait pour un ami.
> Il n'arrive pas à l'executer sous un vrai ms-dos 5.
> Apparemment il ne prend pas en compte la variable %chemin%, sauriez
> vous me dire pourquoi ? Comment puis-je résoudre ce problème ?
> J'ai testé mon code sous FreeDos et il fonctionne pourtant.
> Je ne trouve pas de solution, aidez moi

    Dans mes souvenirs MS-DOS, "chemin" n'existait pas, c'était "PA TH".

    Et le paramètre "/P" est apparu après, dans la commande "SET /P".

    Mais il est difficile de se remémorer avec précision la versi on 5 de MS-DOS.

--
Laurent Jumet - Point de Chat, Liège, BELGIUM
      KeyID: 0xCFAF704C
             [Restore address to laurent.jumet for e-mail r eply.]



Bonjour merci pour ta réponse
PATCH est pour donner le chemin du répertoire hors ici je veux saisir
un nom de fichier qui est aléatoire se situant un dossier
set /p chemin= peut etre aussi set /p nom=Saisir le nom du fichier :
en tapant monjournal.txt
je vois que %chemin% appelé par type %chemin% est vide car set /p
n'existe pas sous ms dos 5.

J aimerai trouver une parade à cela par quoi le remplacer ?
Avatar
Laurent Jumet
Hello Laddy !

Laddy wrote:

Bonjour merci pour ta réponse
PATCH est pour donner le chemin du répertoire hors ici je veux saisir
un nom de fichier qui est aléatoire se situant un dossier
set /p chemin= peut etre aussi set /p nom=Saisir le nom du fichier :
en tapant monjournal.txt
je vois que %chemin% appelé par type %chemin% est vide car set /p
n'existe pas sous ms dos 5.
J aimerai trouver une parade à cela par quoi le remplacer ?



Je comprends.
En fait depuis longtemps, j'employais non plus COMMAND.COM mais 4DOS qui est très puissant.
Tu dis que ton copain travaille avec MS-DOS5: dans ce cas, ça va s'arranger car 4dos est devenu freeware.
Il lui suffit d'installer l'interpréteur dans son config.sys avec la commande SHELL Puis il faut regarder la liste des commandes et variables, qui est beaucoup plus importante que COMMAND.COM.

Dans ton cas, la commande à utiliser est
INPUT Saisir le nom du fichier %%fname

http://www.jpsoft.com/downloads/4dos/4dos750.exe


--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]
Avatar
Laddy
On 26 juin, 14:42, "Laurent Jumet"
wrote:
Hello Laddy !

Laddy wrote:
> Bonjour merci pour ta réponse
> PATCH est pour donner le chemin du répertoire hors ici je veux saisir
> un nom de fichier qui est aléatoire se situant un dossier
> set /p chemin= peut etre aussi set /p nom=Saisir le nom du fichier :
> en tapant monjournal.txt
> je vois que %chemin% appelé par type %chemin% est vide car set /p
> n'existe pas sous ms dos 5.
> J aimerai trouver une parade à cela par quoi le remplacer ?

    Je comprends.
    En fait depuis longtemps, j'employais non plus COMMAND.COM mais 4 DOS qui est très puissant.
    Tu dis que ton copain travaille avec MS-DOS5: dans ce cas, ça v a s'arranger car 4dos est devenu freeware.
    Il lui suffit d'installer l'interpréteur dans son config.sys av ec la commande SHELL=
    Puis il faut regarder la liste des commandes et variables, qui es t beaucoup plus importante que COMMAND.COM.

    Dans ton cas, la commande à utiliser est
INPUT Saisir le nom du fichier %%fname

http://www.jpsoft.com/downloads/4dos/4dos750.exe

--
Laurent Jumet - Point de Chat, Liège, BELGIUM
      KeyID: 0xCFAF704C
             [Restore address to laurent.jumet for e-mail r eply.]



merci Laurent
il faut installer tout les fichiers à la racine du c: ?

je vais regarder la commande input
et voir comment déclarer %%fname
merci
Avatar
Laurent Jumet
Hello Laddy !

Laddy wrote:

il faut installer tout les fichiers à la racine du c: ?



Non. Tu crées un dossier à nom court, genre c:4DOS et puis tu lances le désarchivage dedans. Il y a une install automatique partielle, si tu lances l'archive qui est un .exe
Il y a dans le même dossier un fichier 4DOS.INI capital, car on y met les options par défaut.
Il faut lire la DOC pour comprendre le principe.

Une fois installé dans le config.sys avec la commande
SHELL=C:4DOS4DOS.COM
c'est lui qui remplace command.com pour tout.

je vais regarder la commande input
et voir comment déclarer %%fname



Avec 4dos, les variables peuvent être des mots que tu choisis:

INPUT Quel fichier faut-il copier? %%babacool
COPY %babacool c:post68

Tu vas être étonnée par l'énorme quantité de possibilités de 4DOS.

--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]
Avatar
Laddy
On 28 juin, 12:28, Laddy wrote:
On 26 juin, 14:42, "Laurent Jumet"
wrote:



> Hello Laddy !

> Laddy wrote:
> > Bonjour merci pour ta réponse
> > PATCH est pour donner le chemin du répertoire hors ici je veux sais ir
> > un nom de fichier qui est aléatoire se situant un dossier
> > set /p chemin= peut etre aussi set /p nom=Saisir le nom du fichie r :
> > en tapant monjournal.txt
> > je vois que %chemin% appelé par type %chemin% est vide car set /p
> > n'existe pas sous ms dos 5.
> > J aimerai trouver une parade à cela par quoi le remplacer ?

>     Je comprends.
>     En fait depuis longtemps, j'employais non plus COMMAND.COM mais 4DOSqui est très puissant.
>     Tu dis que ton copain travaille avec MS-DOS5: dans ce cas, ça va s'arranger car4dosest devenu freeware.
>     Il lui suffit d'installer l'interpréteur dans sonconfig.sysav ec la commandeSHELL=
>     Puis il faut regarder la liste des commandes et variables, qui est beaucoup plus importante que COMMAND.COM.

>     Dans ton cas, la commande à utiliser est
> INPUT Saisir le nom du fichier %%fname

>http://www.jpsoft.com/downloads/4dos/4dos750.exe

> --
> Laurent Jumet - Point de Chat, Liège, BELGIUM
>       KeyID: 0xCFAF704C
>              [Restore address to laurent.jumet for e-mail reply.]

merci Laurent
il faut installer tout les fichiers à la racine du c: ?

je vais regarder la commande input
et voir comment déclarer %%fname
merci



Hmmm ça m'a l'air compliqué je n'arrive pas à le faire fonctionner
Avatar
Laddy
On 28 juin, 12:34, "Laurent Jumet"
wrote:
Hello Laddy !

Laddy wrote:
> il faut installer tout les fichiers à la racine du c: ?

    Non. Tu crées un dossier à nom court, genre c:4DOS et puis t u lances le désarchivage dedans. Il y a une install automatique partielle , si tu lances l'archive qui est un .exe
    Il y a dans le même dossier un fichier 4DOS.INI capital, car on y met les options par défaut.
    Il faut lire la DOC pour comprendre le principe.

    Une fois installé dans le config.sys avec la commande
SHELL=C:4DOS4DOS.COM
    c'est lui qui remplace command.com pour tout.

> je vais regarder la commande input
> et voir comment déclarer %%fname

    Avec 4dos, les variables peuvent être des mots que tu choisis:

INPUT Quel fichier faut-il copier?  %%babacool
COPY %babacool c:post68

    Tu vas être étonnée par l'énorme quantité de possibilit és de 4DOS.

--
Laurent Jumet - Point de Chat, Liège, BELGIUM
      KeyID: 0xCFAF704C
             [Restore address to laurent.jumet for e-mail r eply.]



Rah lala la doc est en anglais pas cool de tout bien comprendre.
je n'arrive pas à faire le parallèle entre set /p et input %%fname
input Quel fichier ouvrir ? %%fname est ce que cette commande invite
l'utilisateur à saisir un fichier ? et lui attribut la variable %
%fname pour être utiliser ensuite dans une autre commande ?

%%fname devient %fname ensuite ?

genre si je remplace set /p par input dans mon code est ce que ça va
fonctionner ?


@echo off

:: script Laddy

::ouvre le dossier C:Perso avant l'executation
CD C:Perso

::saisie le fichier avec son extension uniquement
input Nom de votre fichier avec extension : %%fname
::affiche le contenu du fichier
type %fname

Input Souhaitez vous ajouter du texte ? [o,n] = %%choix
if /i %choix==o goto ajouter
if /i %choix==n goto fin
:ajouter
::ajoute du txt au fichier existant
type con >> %chemin%
pause
:fin
@exit

Sous windows xp pro je ne suis pas sur de pouvoir faire fonctionner
4dos, mais je ne vois pas comment l'installer sous virtualbox ça
aurait été pratique.
Quand au 4dos.ini rien compris ce qu'il fallait mettre dedans

merci de ton aide
Avatar
Laddy
Hmmm j'ai un autre soucis type con n'existe pas dans 4dos
comment stocker du texte dans un fichier txt ? comment l'editer ? edit
n'existe pas non plus...
Avatar
Laurent Jumet
Hello Laddy !

Laddy wrote:

Rah lala la doc est en anglais pas cool de tout bien comprendre.
je n'arrive pas à faire le parallèle entre set /p et input %%fname
input Quel fichier ouvrir ? %%fname est ce que cette commande invite
l'utilisateur à saisir un fichier ? et lui attribut la variable %
%fname pour être utiliser ensuite dans une autre commande ?



Exactement. Supposons un batch avec ces deux lignes:
INPUT Comment s'appelle ton chat? %%chat
ECHO %chat

À l'exécution tu liras à l'écran
"Comment s'appelle ton chat?"
Tu tapes la réponse: Alphonse [Enter] et il t'affiche
"Alphonse" qui est le contenu de la variable %chat

%%fname devient %fname ensuite ?



...ça c'est une subtilité omniprésente pour COMMAND.COM aussi, parfois il faut mettre deux "%%" autrement ça ne va pas.

genre si je remplace set /p par input dans mon code est ce que ça va
fonctionner ?



...oui.
Passons en revue ton Batch (ce n'est pas un script, c'est un Batch)
L'extension de ton fichier peut être .BAT ou .BTM; dans le second cas il ne fonctionnera pas avec command.com ce qui est préférable.

@echo off
:: script Laddy
::ouvre le dossier C:Perso avant l'execution
CD C:Perso


Ici tu peux employer PUSHD au lieu de CD pour plusieurs raisons:
CD ne marche que si tu es déjà sur le C: et pas sur un autre drive (il faut employer alors CDD Change Drive and Directory).
PUSHD te permet de revenir en arrière en mettant POPD seul sur une ligne.

::saisie le fichier avec son extension uniquement
input Nom de votre fichier avec extension : %%fname


...oui.

::affiche le contenu du fichier
type %fname


Il vaut mieux mettre "TYPE /p %fname" pour un arrêt à chaque page, autrement tout défile d'un coup.

Input Souhaitez vous ajouter du texte ? [o,n] = %%choix


Ici c'est une réponse par lettre unique, on emploie alors INKEY:
INKEY Souhaitez-vous ajouter du texte? [o,n] %%choix

if /i %choix==o goto ajouter
if /i %choix==n goto fin


...oui mais avec guillemets car ce sont des lettres et non des chiffres:
if /i "%choix"=="o" goto ajouter
if /i NOT "%choix"=="o" goto fin

:ajouter
::ajoute du txt au fichier existant
type con >> %chemin%


Alors ici ça n'ira pas avec ta syntaxe. Tu dois mettre ceci:
:ajouter
::ajoute du txt au fichier existant
::Pour terminer, taper Ctrl-Z au début d'une ligne vide puis Enter.
COPY %fname%+CON

pause
:fin
@exit



Sous windows xp pro je ne suis pas sur de pouvoir faire fonctionner
4dos, mais je ne vois pas comment l'installer sous virtualbox ça
aurait été pratique.


Sous Windows XP ou NT, ce n'est plus 4DOS.COM qu'il faut employer mais 4NT.EXE qui se présente simplement comme une icône sur ton bureau.
4DOS c'est pour MS-DOS, 4NT c'est pour XP ou NT.
C'est via le config.sys qu'on installe 4DOS avec la commande SHELL=.

Quand au 4dos.ini rien compris ce qu'il fallait mettre dedans


Il y a un chapitre du HELP qui y est consacré. Tu peux mettre par exemple (si tu as tout placé dans c:4dos):

Swapping = XMS
Environment = 4096
4StartPath = c:4DOS
Alias = 5120
LocalAliases = No
History = 512
LocalHistory = No
BatchEcho = No
CursorIns = 10
CursorOver = 100
Descriptions = No
DescriptionMax = 511
EditMode = Insert
HelpPath = c:4DOS
HistMin = 2
UpperCase = Yes


--
Laurent Jumet - Point de Chat, Liège, BELGIUM
KeyID: 0xCFAF704C
[Restore address to laurent.jumet for e-mail reply.]
Avatar
Laddy
On 29 juin, 08:19, Laddy wrote:
Hmmm j'ai un autre soucis type con n'existe pas dans 4dos
comment stocker du texte dans un fichier txt ? comment l'editer ? edit
n'existe pas non plus...



J'ai un peu avancé mais dur dur... http://4dos.zzl.org/demo.php
je ne sais pas comment m'y prendre pour saisir tout un txt

création d'un fichier vide
type nul > hello.txt

création de la variable %%fname pour une saisie de l'utilisateur
input %%fname
l'invite demande je tape hello.txt
echo bonjour Laurent peux tu m'aider ? > %fname je valide par entrer
type /p h%fname -> ça m'affiche ce que j'ai saisi...


maintenant il me faut trouver un équivalent de type con car je me vois
mal taper echo text sur une ligne >> hello.txt à chaque fois.
il me faudrait une zone de saisie....
si tu as des pistes, s'il te plait aider moi.
merci
1 2