Utiliser variable DOS

Résolu
Murlox -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaiterai réutiliser le chemin que j'ai défini

set currentpath=%cd%

Pour y copier ensuite un fichier

copy TOTO.txt [le chemin défini]


J'ai naïvement tenté

copy TOTO.txt %currentpath%

Qui ne fonctionne pas... merci par avance d'éclaire ma LENTErne
A voir également:

6 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
hello
mettre des " à cause des espaces
copy TOTO.txt "%currentpath%"
0
Murlox
 
décidemment, merci encore dubcek!
0
Nyctaclope Messages postés 5315 Date d'inscription   Statut Membre Dernière intervention   1 253
 
Bonjour !

La syntaxe correcte serait déjà SET currentpath=cd, sinon cela voudrait dire que CD est déjà une variable.
%..% est la syntaxe de récupération de la valeur de la variable.
Si %cd% était effectivement la chaîne utilisée ( je ne suis pas sûr que ce soit autorisé .. ) il faudrait alors doubler les % dans %currentpath% pour préciser que % est un caractère littéral, et non un code de syntaxe.

Par ailleurs je me demande si COPY est effectivement capable d'écrire ( graver ) sur un CD ?

Essaye d'abord une destination vers le disque dur, pour tester la syntaxe ...

A+

Nyctaclope
0
Nyctaclope Messages postés 5315 Date d'inscription   Statut Membre Dernière intervention   1 253
 
PS :
Je pense, à la réflexion, que ma réponse est erronée, car pour toi CD est déjà une variable ( tu as fait un SET CD= ...)
Mes excuses ...

A+

Nyctaclope
0
Murlox > Nyctaclope Messages postés 5315 Date d'inscription   Statut Membre Dernière intervention  
 
CD comme la syntaxe DOS hein, pas comme CD-ROM !
0
Murlox
 
@Nyctalope

Ca marche niquel avec

set currentpath=%cd%
copy TOTO.txt "%currentpath%"

Et non je n'essaie pas de graver sur un CD? en fait je voulais que le batch s'éxecute depuis et sur ma clef USB et sur n'importe quel PC, donc contourner le changement de lettre de cette clef.

Merci à vous deux en tout cas ;-)
0
Nyctaclope Messages postés 5315 Date d'inscription   Statut Membre Dernière intervention   1 253
 
Merci de l'info ..
Et bravo à Dubcek ! ..
A+
Nyctaclope
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
il y a d'autres variables automatiquement définies:
help set
%CD% - se développe en la chaîne du répertoire en cours.
%DATE% - se développe en la date actuelle en utilisant le même
format que la commande DATE.
%TIME% - se développe en l'heure en cours en utilisant le même
format que la commande TIME.
%RANDOM% - se développe en un nombre aléatoire compris entre 0 et 32767.
%ERRORLEVEL% - se développe en la valeur en cours de ERRORLEVEL
%CMDEXTVERSION% - se développe en le numéro de version des
extensions du processeur de commande en cours.
%CMDCMDLINE% - se développe en la ligne de commande originale
qui a appelé le processeur de commande.
0
Nyctaclope Messages postés 5315 Date d'inscription   Statut Membre Dernière intervention   1 253
 
Re !
Eh bien merci de cette info ...
Et notamment je ne connaissais pas %CD% d'où mon erreur ...
J'en étais resté au "vieux" DOS, qui n'avait pas tout cela ...
Par contre je serais ravi que tu m'explique les "" car :
- Copy sait bien reconnaître deux arguments et plus séparés par un espace, sans nécessité de "" ..
- pour moi les guillemets obligeraient à reconnaître %xxxxx% comme une chaîne et non comme une variable ??

Merci d'avance !

A+

Nyctaclope
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 636
 
le problème c'est les espaces dans les chemins ou noms de fichiers, il faut des " pour que la commande DOS ne traite cela que comme un seul argument
$ dir > z
$ echo %cd%
C:\Documents and Settings\Nom Prenom\Mes documents\src
$ copy z %cd%\zz
La syntaxe de la commande est incorrecte.
$ copy z "%cd%\zz"
1 fichier(s) copié(s).

ou bien utiliser les noms courts DOS sans espaces, plus besoins de ":
C:\DOCUME~1\NOM~1\MESDOC~1\src
0