Поиск и удаление ._ файлов с помощью командного файла - PullRequest
0 голосов
/ 12 октября 2019

Это должно быть просто. Я пытаюсь найти и удалить файлы ._ с помощью командного файла. Файлы были скопированы с Mac на ПК;)

ECHO Again!
DIR /B /A-D /ON /S ._* 2>nul
DEL /S ._*

Он перечислит их, но не удалит их. Что с этим?

D:\projects\._my_colours.txt
D:\projects\._png_vs_jpeg.jsx
D:\projects\._rainbow_screen_sizes.jsx
D:\projects\._save_it_mac.jsx
D:\projects\._some_text.txt
Could Not Find D:\projects\*._

Я могу удалить их вручную, однако, я просто хочу знать, где я иду не так.

Ответы [ 2 ]

1 голос
/ 12 октября 2019

Файлы, перенесенные с MAC, должны иметь только архив и скрытые свойства, поэтому, чтобы гарантировать, что вы только заберете их, я бы посоветовал выбирать только те, которые нужно удалить. Команда DEL имеет параметр /A, который выбирает файлы для удаления на основе их атрибутов. Как только вы используете опцию /A, он выбирает все атрибуты, как если бы вы их выбрали. Если вы не исключите какие-либо атрибуты с использованием префикса -, он удалит их все, (за исключением только для чтения, если только вы не включили параметр /F) . Например, DEL /F /A ._* удалит те с R только для ead, S ystem, H iden, A rchive, un I ndexed и точками повторной обработки (L). В этом случае вам нужны те, у кого есть только H и A, поэтому для исключения всех остальных вы должны использовать их префикс исключения. Кроме того, поскольку ._* является глобальным символом подстановки, вы, вероятно, захотите использовать опцию /Q, чтобы запретить запрашиваемый запрос подтверждения.

Del /S /Q /A:HA-R-S-I-L ._*

В качестве примечательного примечания, если у вас есть MACкаталоги также перенесены, они могут иметь файловых партнеровНапример, готовый к архивированию скрытый каталог .Trashes будет связан с готовым к архивированию скрытым файлом с именем ._.Trashes рядом с ним. Они будут удалены с использованием подстановочного знака выше, поэтому, если у вас есть каталоги такого типа, и вы тоже их не удаляете, вы можете использовать другой метод для сохранения своих файлов партнеров.

Выможет сделать это из через . (из вам нужно экранировать символы % с другим, %%):

For /F "Delims=" %A In ('Dir /B /S /A:HA-D-R-S-I-L ._* 2^>NUL') Do @If Not Exist "%~dpxA\" Del /A "%A"

В этом случае *Команда 1039 * выбирает все файлы, используя ту же методологию, что и используемая команда DEL, и передает эти файлы в качестве метабарителей в часть Do. Затем мы удаляем каждый переданный файл, если он не является партнером каталога. Мы можем сделать это, используя только опцию /A, , потому что DIR предварительно выбрал только те, которые мы хотим . Чтобы выполнить проверку партнера, мы просто используем простую инструкцию IF NOT EXIST, помня, что при проверке существования каталога мы используем завершающую обратную косую черту. Проверка выполняется путем расширения каждой мета-переменной %A до drive:, \path\ и .extension с использованием %~dpxA. Расширение D:\MyDirectory\SubDirectory\._.Trashes вернет D:\MyDirectory\SubDirectory\.Trashes, поэтому выполненная проверка будет If Not Exist "D:\MyDirectory\SubDirectory\.Trashes\". Если этот каталог не существует, он удаляется с помощью Del /A "D:\MyDirectory\SubDirectory\._.Trashes".

0 голосов
/ 12 октября 2019

Системные файлы! Ох!

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