40 votes

Comment faire fonctionner l'ÉQUIPE avec %* dans les fichiers batch

Dans mon fichier batch sous Windows XP, je veux utiliser %* pour développer tous les paramètres sauf le premier.
Fichier de test (foo.bat) :

@echo off
echo %*
shift
echo %*

Appeler :

C:\> foo a b c d e f

Résultat réel :

a b c d e f
a b c d e f

Résultat souhaité :

a b c d e f
b c d e f

Comment puis-je obtenir le résultat souhaité ? Merci ! !

3voto

Andriy M Points 40395

Ne pensez pas qu'il y a un moyen simple de le faire. Vous pouvez essayer de jouer avec la solution de contournement suivante à la place :

@ECHO OFF
>tmp ECHO(%*
SET /P t=<tmp
SETLOCAL EnableDelayedExpansion
IF DEFINED t SET "t=!t:%1 =!"
ECHO(!t!

Exemple :

test.bat 1 2 3=4

Sortie :

2 3=4

1voto

cyberponk Points 655

Une autre façon facile de le faire est :

set "_args=%*"
set "_args=%_args:* =%"

echo/%_args%

Remarques :

  • Ne fonctionne pas si le premier argument (%1) est 'quoted' ou 'double quoted'
  • Ne fonctionne pas si un argument contient le caractère &
  • Tous les espaces supplémentaires entre les arguments NE SERONT PAS SUPPRIMÉS

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X