CMD : Pb de guillemets

Le
moi
bonsoir,

j'ai toujours eu du mal avec les histoires de guillemets

J'ai 4 "procédures" dans un cmd
pour faire "du ménage" :

DELFICH arg
doit effacer le(s) fichier(s) transmis en argument
et j'aimerais que les caractères ? et * soient acceptés.

ex :
CALL :DELFICH "F:TEMPtant peuAC2.jpg"
CALL :DELFICH "F:TEMPtant peuAB?.gif"

DELTYP arg1 arg2
doit détruire les fichiers situés dans le répertoire arg1
et dont l'extension est arg2
( en traitant les ss repertoires)

ex :
CALL :DELTYP "F:TEMPtant peu" rtf

VIDER arg
doit vider sans le détruire le répertoire transmis en argument
ex :
CALL :VIDER "F:TEMPtant peua vider"

SUPPREP arg
doit supprimer totalement le répertoire transmis en argument
ex :
CALL :SUPPREP "F:TEMPtant peubidon"

J'ai l'impression que les fichiers cachés passent à travers
et surtout
j'ai des pb avec les guillemets

Après plusieurs tests "presque bons"
j'ai décidé de mettre systématiquement les arguments entre guillemets
(sauf arg2 de DELTYP )
mais en fait, j'ai l'impression que d'autres pb surgissent

J'aurais donc besoin de certitudes et d'un bon coup de pouce .

Je vous en remercie par avance.


Voici les procédures :

:: ==
:DELFICH
if exist %1 (
DEL /F /Q %1
)
GOTO :EOF
:: ==
:DELTYP
if exist %1 (
DEL /F /S /Q "%1*.%2"
)
GOTO :EOF
:: ==
:SUPPREP
if exist %1 (
RD /S /Q %1
)
GOTO :EOF
:: ==
:VIDER
if exist %1 (
FOR /D %%n IN ("%1*") DO RD /S /Q "%%n"
DEL /F /S /Q "%1*"
)
GOTO :EOF
:: ==

HB
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MCI \(ex do ré Mi chel la si do\) [MVP]
Le #18132591
Bonsoir !

Je n'ai plus le temps de regarder en détail, avant d'aller dormir.
Mais, pour vider un dossier, on peut faire : DEL "dossier" /S /Q (ou
DEL "%1" /S /Q)
On peut aussi utiliser plusieurs "patterns" ; par exemple :
del "dossier*.txt" "dossier*.hta" "dossier*.old" /s /q

@-salutations
--
MCI
Philemil
Le #18134161
Bonjour

moi a écrit :
bonsoir,

j'ai toujours eu du mal avec les histoires de guillemets ...



moi aussi :-)

J'ai 4 "procédures" dans un cmd
pour faire "du ménage" :



../..


Après plusieurs tests "presque bons"
j'ai décidé de mettre systématiquement les arguments entre guillemets
(sauf arg2 de DELTYP )
mais en fait, j'ai l'impression que d'autres pb surgissent...

J'aurais donc besoin de certitudes et d'un bon coup de pouce ....

Je vous en remercie par avance.


Voici les procédures :



> ex :
> CALL :DELTYP "F:TEMPtant peu" rtf
>
../..
>



.../...
> :DELTYP
> if exist %1 (
> DEL /F /S /Q "%1*.%2"
> )
> GOTO :EOF


L'argument %1 reçoit les guillemets, donc cela donne comme résultat
DEL /F /S /Q ""argument1"*.extension"

La commande DEL ne va pas apprécier

Il y a lieu de rajouter un tilde pour supprimer les guillemets de
l'argument passé (qui sont bien sûr indispensable pour former 1 seul
argument malgré les espaces)

:DELTYP
if exist %1 (
DEL /F /S /Q "%~1*.%~2"
)
GOTO :EOF

enfin il me semble ?
bonne journée
Philippe
MCI \(ex do ré Mi chel la si do\) [MVP]
Le #18134301
Bonjour !

L'argument %1 reçoit les guillemets, donc cela donne comme résultat
DEL /F /S /Q ""argument1"*.extension"



Toutafé.


Il y a lieu de rajouter un tilde pour supprimer les guillemets



C'est une solution. Mais, on peut, simplement, ne pas mettre de
guillemets dans le batch :
:DELTYP
if exist %1 DEL /F /S /Q %1
GOTO :EOF


@-salutations
--
Michel Claveau
MCI \(ex do ré Mi chel la si do\) [MVP]
Le #18134291
Re !

J'ai oublié de préciser qu'il faut appeler la routine de cette façon :
CALL :DELTYP "F:TEMPtant peu*.rtf"

@+
--
MCI
Philemil
Le #18134681
MCI (ex do ré Mi chel la si do) [MVP] a écrit :


Bonjour !



Bonjour


L'argument %1 reçoit les guillemets, donc cela donne comme résultat
DEL /F /S /Q ""argument1"*.extension"



Toutafé.


Il y a lieu de rajouter un tilde pour supprimer les guillemets



C'est une solution. Mais, on peut, simplement, ne pas mettre de
guillemets dans le batch :
:DELTYP
if exist %1 DEL /F /S /Q %1
GOTO :EOF





Ce serait faire l'appel avec un seul argument, la routine n'en
comportant pas, comme vous l'indiquez, c'est bien cela ?

CALL :DELTYP "F:TEMPtant peu*.rtf"


Oui, mais le demandeur indique qu'il travaille avec un deuxième argument
avec l'extension des fichiers,

CALL :DELTYP "F:TEMPtant peu" rtf

donc il me semblait nécessaire de virer les guillemets au moins sur le
premier argument,

:DELTYP
if exist %1 DEL /F /S /Q "%~1*.%2"
GOTO :EOF


Il indique également un problème avec les fichiers cachés, la commande
DEL comporte un commutateur /A:H , mais cela va sans doute demander
l'ajout de la ligne, je me trompe ?

:DELTYP
if exist %1 (
DEL /F /S /Q "%~1*.%2"
DEL /F /S /Q /A:H "%~1*.%2"
)
GOTO :EOF

Bonne journée
Philippe
Méta-MCI \(MVP\)
Le #18135171
Bonjour !

C'est (tout) vrai. Mais, je pense que l'histoire des deux arguments
séparés ne doit pas être vraiment impératif.
Pour les attributs, en plus du H (/A:H), on pourrait ajouter S (système)
et -L (pour exclure les points d'analyse / hardlinks).

@+
--
MCI
moi
Le #18135391
Méta-MCI (MVP) wrote:
Bonjour !

C'est (tout) vrai. Mais, je pense que l'histoire des deux arguments
séparés ne doit pas être vraiment impératif.
Pour les attributs, en plus du H (/A:H), on pourrait ajouter S
(système) et -L (pour exclure les points d'analyse / hardlinks).




Bonjour à tous et merci,

comme le disait qqun d'autre : " J'adore ce NG"

Je vais m'inspirer de tout ça...
Mes derniers tests sont farpaits [ (c) Obelix ]

- C'est vrai que le second argument est artificiel ...

- J'avais complètement zappé l'utilisation du tilde

Pour les attributs H et S j'avais ajouté une ligne avec Attrib et les
mêmes "descripteurs de fichiers" avant le del ou le RD pour traiter en
force ces pbs
( avec quand nécessaire les commutateurs /S et /D )

Normalement il ne devrait pas y avoir de HardLinks dans les secteurs
visés. Par prudence et pour éviter l'imprévu, j'ajouterais bien /A:-L
mais l'aide en ligne de DEL ne signale pas cette valeur sur ma machine
à la maison ( XP Home) . Les scripts tourneront sur du XP-Pro...
Y aurait -il une différence à ce niveau là entre ces deux OS ?

HB
Méta-MCI \(MVP\)
Le #18141071
Bonsoir !

Il y a encore des gens sous XP ? C'est incroyable, le conformisme
conservateur de certains informaticiens.
On finira par voir des gens faire des batchs...

Bref, j'ai lancé un XP virtuel, et effectivement, l'aide ne mentionne
pas les points d'analyse (hardlinks). Mais, un petit test avec DEL /A:-L
ne donne pas d'erreur.

J'ai donc créé quelques hardlinks, mais, malheureusement, le /A:-L
n'est pas pris en compte. Les hardlinks sont bel et bien effacés.

Donc, l'option /A: (-)L n'est en effective qu'à partir de Vista.

@-salutations
--
Michel Claveau
moi
Le #18147411
bonjour,

Il y a encore des gens sous XP ? C'est incroyable, le conformisme
conservateur de certains informaticiens.
On finira par voir des gens faire des batchs...



o;)


Donc, l'option /A: (-)L n'est en effective qu'à partir de Vista.




Je n'avais donc pas rêvé ...

Merci

A+

HB
Publicité
Poster une réponse
Anonyme