lancement d'un batch par le menu contextuel (avec des espaces dans le chemin)

Le
g.bon
Bonjour,

J'utilise depuis longtemps des petits batchs lancés par le menu contextuel
qui créent un certain nombre de répertoire.
Ceci ne marche pas lorsque le chemin comprend un espace.

Si je le lance dans c:windows, il me crée les dossiers dans ce répertoire,
ça fonctionne.
Si je le lance dans "c:program files", il tente de s'executer dans
c:program

Voici ce que j'ajoute au registre :
[HKEY_CLASSES_ROOTFoldershellcrearep_dh]
@="crearep_dh"
[HKEY_CLASSES_ROOTFoldershellcrearep_dhcommand]
@="cmd.exe /k crearep_dh.cmd %1"

Le %1 que je récupère dans mon batch est le début du chemin, tronqué au
premier espace.

Savez-vous comment remédier à cela ?

Merci,
GB
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
CriCri
Le #20905781
g.bon a écrit :

@="cmd.exe /k crearep_dh.cmd %1"



Et si tu mettais
"cmd.exe /k crearep_dh.cmd" "%1"

--
bitwyse [PGP KeyID 0xA79C8F2C]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
Lou Ravi
Le #20906101
g.bon wrote:
Bonjour,

J'utilise depuis longtemps des petits batchs lancés par le menu
contextuel qui créent un certain nombre de répertoire.
Ceci ne marche pas lorsque le chemin comprend un espace.

Si je le lance dans c:windows, il me crée les dossiers dans ce
répertoire, ça fonctionne.
Si je le lance dans "c:program files", il tente de s'executer dans
c:program

Voici ce que j'ajoute au registre :
[HKEY_CLASSES_ROOTFoldershellcrearep_dh]
@="crearep_dh"
[HKEY_CLASSES_ROOTFoldershellcrearep_dhcommand]
@="cmd.exe /k crearep_dh.cmd %1"

Le %1 que je récupère dans mon batch est le début du chemin, tronqué
au premier espace.

Savez-vous comment remédier à cela ?



Sans être certain, je dirais que c'est une histoire de nombre de caractères
acceptables, ou leur forme. Essaie de mettre le nom des dossiers entre
guillemets.
g.bon
Le #20906621
> Et si tu mettais
"cmd.exe /k crearep_dh.cmd" "%1"



Merci, je viens d'essayer... c'est pas mieux.
g.bon
Le #20906611
Sans être certain, je dirais que c'est une histoire de nombre de caractères
acceptables, ou leur forme. Essaie de mettre le nom des dossiers entre
guillemets.



Ca n'est pas vraiment le nombre de caractères, si je remplace les espaces
par des x, underscores ou ce qu'on veut, ça marche.
Pour les guillements, j'en avais "l'intuition" mais j'ai essayé pas mal de
choses et pas de résultat.

Merci,
GB
CriCri
Le #20906721
g.bon a écrit :

Merci, je viens d'essayer... c'est pas mieux.



On peut prendre connaissance du contenu de ton "crearep_dh.cmd"?

Si ce n'est pas top-secret il serait plus facile de l'essayer que de
deviner ;-)

Cdlt
CC

--
bitwyse [PGP KeyID 0xA79C8F2C]
http://www.le-maquis.net
C'est comme au CNRS: des chercheurs qui cherchent on en trouve
mais des chercheurs qui trouvent on en cherche.
g.bon
Le #20906711
> On peut prendre connaissance du contenu de ton "crearep_dh.cmd"?

Si ce n'est pas top-secret il serait plus facile de l'essayer que de
deviner ;-)



Bien-sûr, ca n'a rien de secret mais j'ai peur que ça ne soit pas très
utile.

J'ai mis en première ligne "echo %1" et dès ce moment la ligne affichée
n'est pas complète (arrêt au premier espace).
Le reste du script n'a rien de spécial et il marche sans espace dans le
chemin :

echo %1
call recup_date_heure.cmd
md %1%annee%%mois%%jour%_%heure%%min%_
exit

dans cet exemple, je crée un dossier dont le nom est l'année le mois, le
jours, l'heure et les minutes.

A+
GB
LeLapin
Le #20907031
g.bon a tapoté du bout de ses petites papattes :
Et si tu mettais
"cmd.exe /k crearep_dh.cmd" "%1"



Merci, je viens d'essayer... c'est pas mieux.



Tu peux pas remplacer le batch par un peu de code en n'importe quoi ?
Après tout :

Laws of Computer Programming
10. An operating system is a feeble attempt to include what was
overlooked in the design of a programming language.

(en relisant ça 30 ans plus tard, mon dieu ce que ça fait bizarre)

--
LeLapin
g.bon
Le #20907221
> Tu peux pas remplacer le batch par un peu de code en n'importe quoi ?
Après tout :



Je pourrais surement si je savais...
ça n'est pas mon cas.

Je ne maitrise pas de language qui me permette de faire ça, même si c'est
peut-être trivial.

GB
LeLapin
Le #20907511
g.bon a tapoté du bout de ses petites papattes :
Tu peux pas remplacer le batch par un peu de code en n'importe quoi ?
Après tout :



Je pourrais surement si je savais...
ça n'est pas mon cas.

Je ne maitrise pas de language qui me permette de faire ça, même si c'est
peut-être trivial.



Est-ce que ce tuto pourrait t'aider ? Attention il y a des trucs dans
le menu à gauche. En tous cas ça parle des batches pour XP et Vista.
http://commandwindows.com/batch.htm

--
LeLapin
Pierre Maurette
Le #20907881
g.bon, le 05/01/2010 a écrit :
Bonjour,

J'utilise depuis longtemps des petits batchs lancés par le menu contextuel
qui créent un certain nombre de répertoire.
Ceci ne marche pas lorsque le chemin comprend un espace.

Si je le lance dans c:windows, il me crée les dossiers dans ce répertoire,
ça fonctionne.
Si je le lance dans "c:program files", il tente de s'executer dans
c:program

Voici ce que j'ajoute au registre :
[HKEY_CLASSES_ROOTFoldershellcrearep_dh]
@="crearep_dh"
[HKEY_CLASSES_ROOTFoldershellcrearep_dhcommand]
@="cmd.exe /k crearep_dh.cmd %1"

Le %1 que je récupère dans mon batch est le début du chemin, tronqué au
premier espace.

Savez-vous comment remédier à cela ?



Essayez:
@="cmd.exe /k crearep_dh.cmd `""%1"""
ou peut-être:
@=cmd.exe /k crearep_dh.cmd ""%1""

Le premier est la mise entre guillemets du second, et les " sont des
guillemets échappés parce qu'eux-mêmes entre guillemets.

--
Pierre Maurette
Publicité
Poster une réponse
Anonyme