Команда DOS для удаления файла 001.* копии, но только если файл.* существует

у меня есть дерево каталогов, содержащих файлы и иногда копию в том же месте. Эта копия идентифицируется некоторой строкой, например _001, присоединены к исходному имени файла.

  • somefile.txt и
  • somefile_001.txt

Я могу перечислить такие файлы в командной строке DOS, используя:
dir /s *_001.*

или

for /f "tokens=1,2 delims=_" %i in ('dir /s /b *_*.*') do echo %i_%j

но я не знаю, возможно ли это, вероятно, используя более поздний формат, проверить, существует ли исходный файл и в в этом случае удалите копию.

26
задан Chenmunka
23.02.2023 8:40 Количество просмотров материала 2495
Распечатать страницу

1 ответ

ваша команда довольно близко. Попробуйте это:

for %i in (*) do if exist "%~ni_001%~xi" echo del "%~ni_001%~xi"

проверьте несколько результирующих операторов del для тестирования, чтобы доказать, что удаляются правильные файлы, а затем удалите " Эхо " для фактического удаления. Или, перенаправить вывод в файл заявления Del и проверить.

материал %~ n и x объясняется ближе к концу команды 'help for'.

EDIT: %xi не нуждается в a . в передней части его как . является частью расширение возвращено %~xi. Исправлено.

EDIT2: изменен "del %i" на текущую форму, поскольку я неправильно истолковал исходный вопрос и думал, что проверенный файл должен быть удален, а не копия _001. Кроме того, добавлены кавычки для защиты имен файлов с пробелами.

2
отвечен james 2023-02-24 16:28

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх