Пакетный скрипт для удаления определенных файлов, основанных на одном файле (иногда варьируется формат), существует во всех подпапках - PullRequest
0 голосов
/ 15 января 2019

У меня было несколько подпапок в главной папке, как показано ниже

  • \ главная \ sub1
  • \ главная \ sub2 ...........

В этих подпапках стандартно есть 3 типа файлов, как показано ниже в подпункте 1:

  • 9980000000113100_2C8C6ADEPatT.P3D
  • 9980000000113100_2C8C6ADEPatT.P3D.txt
  • 9980000000113100_2C8C6ADEPatT.P3D.M71
  • 9980000000113100_2C8C6ADEPatT.P3D.pkg

в sub2: в txt-файле и pkg-файле отсутствует P3? в его названии

  • 9980000001110000_00000000NARC.txt
  • 9980000001110000_00000000NARC.P3D
  • 9980000001110000_00000000NARC.P3D.M71
  • 9980000001110000_00000000NARC.pkg

.....

Теперь я могу использовать приведенный ниже код Основной CD FOR / R %% G IN (* .TXT) DO IF EXIST "%% ~ dpnG" DEL "%% ~ dpnG"

для удаления 9980000000113100_2C8C6ADEPatT.P3D в sub1. Я не могу удалить 9980000001110000_00000000NARC.P3D в sub2

Есть ли способ удалить * .P3? файл в Sub1 и sub2 в зависимости от условия, если существует * .txt в этой подпапке ...

Надеюсь, я все объясню ...

Спасибо

Ответы [ 3 ]

0 голосов
/ 15 января 2019

Вот еще одна лучшая догадка, основанная на вашем плохом объяснении:

@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)
0 голосов
/ 16 января 2019
for /r %%G in (*.P3?) do if exist "%%~G.txt" del "%%~G"

Это удалит в sub1

  • 9980000000113100_2C8C6ADEPatT.P3D

если существует

  • 9980000000113100_2C8C6ADEPatT.P3D.txt

который существует, поэтому он действительно удаляет.


Это удалит в sub2

  • 9980000001110000_00000000NARC.P3D

если существует

  • 9980000001110000_00000000NARC.P3D.txt

которого не существует, поэтому нечего удалять.

0 голосов
/ 15 января 2019

После ваших комментариев, я думаю, это то, что вы хотите:

@echo off
setlocal enabledelayedexpansion
for /R %%i in (*.txt) do (
  if exist "%%~dpni.pkg" set "fn=%%~dpni" & for %%a in (!fn!) do del %%~dpna*
)

Мы ищем *.txt и получаем их имя, независимо от того, как они называются. Затем мы проверяем, совпадает ли имя файла (исключая расширение .txt) и добавляя расширение .pkg. Затем мы запускаем другой цикл, чтобы снова удалить любое расширение, которое в случае, если имя было удалено из расширения, может / не может содержать P3*, тогда, если это условие истинно, это означает, что мы нашли и filename.txt, и filename.pkg (независимо от того, содержит ли он P3 * или нет), мы просто запускаем `del filename * (исключая P3 * и исключая любое расширение.

Опять же, note Я добавил эхо перед командами del, чтобы вы могли проверять и печатать только результат, только удаляйте echo из последней строки do echo del %%~dpna*, как только вы довольны тем, что результаты выводятся на экран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...