6
votes

La substitution de chaîne de lots Windows ne fonctionne pas lorsque la chaîne de recherche est donnée par une variable

J'ai tiré du code censé supprimer des fichiers qui n'ont pas de noms commençant par la valeur de Garder . Je réussis cela en mettant le nom du fichier dans tmpl1 et tmpl2 en substituant la valeur de garder avec rien. Si tmpl1 et tmpl2 est différent, je garde le fichier, sinon il est supprimé. XXX

Ceci fonctionne bien. Cependant, lorsque je mets ce code dans un script plus grand, régler tmpl2 cesse soudainement de fonctionner. Au lieu de (une partie de) le nom de fichier tmpl2 est maintenant littéralement contenant littéralement tmpl1: = .

Voici le script que je veux l'utiliser. Le pour -Loops ne sont que pour passer via un arborescence de répertoire. La fonction principale du script est toujours la même. xxx

J'ai également essayé "paresseux" expansion retardée en remplaçant SET TMPL2 =! TMPL1:% Garder% =! avec Set d'appel TMPL2 = %% TMPL1:% Garder% = %% . Cela fonctionne également dans le petit script, mais quand je l'applique au gros, je reçois une erreur comme "=%" ne peut pas être traitée syntaxiquement dans cet endroit (c'est une traduction gratuite depuis ma console est en allemand).

Quelqu'un a une idée de ce qui cause cela?


0 commentaires

3 Réponses :


2
votes
                set tmpL2=!tmpL1:=!

3 commentaires

Bon appel! Avez-vous une idée de la façon dont je peux me contenter de ce problème?


appel est le mot opératoire. Appelez un sous-programme. substitut là-bas (comme tmpl1 et Garder sera alors défini) et attribuer à une variable supplémentaire, puis utilisez cette variable supplémentaire comme ! var!


Je ne peux pas sembler avoir ceci pour travailler. J'ai créé un sous-programme avec cette commande: Set d'appel% ~ 3 = %%% ~ 1:% ~ 2 = %% . Le troisième paramètre a alors la valeur du premier paramètre, mais rien n'est substitué.



3
votes

vous pouvez essayer de changer cette ligne
SET TMPL2 =! TMPL1:% Garder% =!

avec xxx


1 commentaires

Collé ce droit et ça marche comme un charme. Merci!



1
votes

au lieu de: xxx

écrire: xxx

puis au bas de votre script, placez ceci: < Pré> xxx


0 commentaires