-1
votes

Script de lots pour supprimer certains fichiers basés sur un fichier (format varient parfois) existent dans tous les sous-dossiers

J'ai eu des sous-dossiers sous le dossier principal comme ci-dessous

  • \ Main \ Sub1
  • \ Main \ Sub2 ...........

    Dans ces sous-dossiers, il existe fondamentalement 3 types de fichiers en standard que ci-dessous dans Sub1:

    • 9980000000000113100_2C8C6ADEPATT.P3D
    • 9980000000000113100_2C8C6ADEPATT.P3D.TXT
    • 998000000000113100_2C8C6ADEPATT.P3D.M71
    • 998000000000113100_2C8C6ADEPATT.P3D.PKG

      dans Sub2: Le fichier TXT et le fichier PKG manque de P3? en son nom

      • 998000000001110000_00000000NARC.TXT
      • 998000000001110000_00000000NARC.P3D
      • 998000000001110000_00000000NARC.P3D.M71
      • 998000000001110000_00000000NARC.PKG

        .....

        maintenant je peux utiliser ci-dessous le code CD principal Pour / r %% g in (* .txt) faire si existez "%% ~ dpng" del "%% ~ dpng"

        Supprimer 9980000000113100_2C8C6ADEPATT.P3D dans SUB1. Je ne peux pas supprimer le 9980000001110000_00000000NARC.P3D dans Sub2

        est un moyen d'avoir supprimé * .p3? Fichier dans Sub1 et Sub2 en fonction de la condition si existent * .txt dans ce sous-dossier ...

        J'espère que je mets clairement ...

        merci


6 commentaires

L'astérisque de fuite dans vos fichiers est-il destiné à être littéral ou à toute annexe?


Vos exemples d'entrée ne correspondent pas à vos exemples de code de sortie.


astérisque de fin signifie littéral.


Désolé déroutant. Je viens d'ajouter que le dossier SUB5 est l'exemple, car il disposait de format non standard des fichiers, la sortie n'est donc pas attendue.


Le caractère * n'est pas autorisé dans un nom de fichier.


Il n'y a aucun moyen que vous ayez cette sortie avec le code et l'exemple de saisie que vous utilisez.


3 Réponses :


0
votes

Après vos commentaires, je pense que c'est ce que vous voulez: xxx

Nous recherchons *. TXT et obtenez leur nom, peu importe ce qu'ils sont appelés. Ensuite, nous testons si le même nom de fichier (à l'exclusion de l'extension .txt ) et d'ajouter un .pkg extension. Ensuite, nous exécutons une autre boucle pour supprimer à nouveau toute extension, laquelle dans le cas où le nom a été dépouillé de l'extension pourrait / n'a pas pu contenir p3 * alors si cette condition est vraie, cela signifie que nous avons trouvé à la fois < Code> FileName.txt et FileName.pkg (Peu importe s'il contient P3 * ou non), nous exécutons simplement `del filename * (Ça excluant une extension.

à nouveau, note j'ai ajouté echo avant les commandes del afin que vous puissiez tester et imprimer uniquement le résultat, supprimez uniquement echo de La dernière ligne Echo del %% ~ dpna * Une fois que vous êtes satisfait de ce que les résultats sont imprimés à l'écran.


8 commentaires

Merci! Juste certains simplifient la question en ci-dessus.


Ensuite, définissez une variable, débarrassez-vous de P3 dans le nom et faites une carte sauvage sur celle-ci. aussi simple que cela.


@goodywp Je vous dis que, modifiez votre question, ajoutez de véritables exemples de fichiers afin que je puisse voir exactement ce à quoi ils ressemblent, ne pas ajouter de caractères drôles * ou quoi que ce soit, affichez simplement des paires de fichiers.


Certains dossiers ont également la P3 * mais ne veulent pas être supprimé uniquement si ce fichier P3 * a abcgefg.p3d.txt et abcdefg.p3d.pkg existent.


@goodywp OK, voyez la réponse éditée, si j'ai bien compris votre condition, c'est ce que vous voulez.


@goodywp Parce que vous n'avez pas lu mon poteau complètement, cela vous montrera ce qu'il fera, de supprimer réellement, supprimer le echo de la chaîne. Je vais le supprimer de ma réponse maintenant et vous essayez à nouveau.


@goodywp j'ai supprimé l'écho pour vous, copiez le code et réessayez.


@ Goodywp, je ne vais plus supporter ce fil plus longtemps, vos besoins continuent de changer.



0
votes

Voici une autre meilleure hypothèse basée sur votre mauvaise explication:

@For /F "Delims=" %%A In ('Where /R . *.p3? 2^>Nul') Do @If Exist "%%~dpnA*.pkg" (If Exist "%%~dpnA*.txt" Del /A /F "%%A" >Nul 2>&1)


1 commentaires

@goodywp, j'ai fait un très petit changement, Je ne ferai plus rien!



0
votes
for /r %%G in (*.P3?) do if exist "%%~G.txt" del "%%~G"
This will delete in sub1
9980000000113100_2C8C6ADEPatT.P3D
if exist
9980000000113100_2C8C6ADEPatT.P3D.txt
which does exist, so it does delete.This will delete in sub2
9980000001110000_00000000NARC.P3D
if exist
9980000001110000_00000000NARC.P3D.txt
which does not exist, so nothing to delete.

0 commentaires