Windows bat файл - удаление из каталога - PullRequest
0 голосов
/ 03 ноября 2010

Не могли бы вы помочь мне решить следующую проблему?Очень часто мне приходится выполнять одну и ту же задачу: удалить практически все файлы из одного каталога - все файлы, кроме 2 (скажем, 1st.file и 2nd.file).Я нашел несколько решений, как стереть все из каталога, но не знаю, как с этим справиться.Не могли бы вы указать, где найти решение?

Ответы [ 3 ]

0 голосов
/ 03 ноября 2010

Замените DONOTDELETE.ME вашим файлом, и этот файл не будет удален.

@echo off
for /r . %%a in (*.*) do (
    IF NOT "%%~nxa" == "DONOTDELETE.ME"  (
         DEL "%%a"    )
)

Вы также можете просто сделать attrib -r для рассматриваемых файлов и впоследствии удалить флаг только для чтения, например, так:

@echo off
cd \myFiles
attrib myFiles\DONOTDELETE1.ME +r
attrib myFiles\DONOTDELETE2.ME +r
del myFiles\*.* /q /s /a-r
attrib myFiles\DONOTDELETE1.ME -r
attrib myFiles\DONOTDELETE2.ME -r
for /f %%a in ('dir myFiles/ad /b') do echo rd myFiles\%%a /q/s
0 голосов
/ 03 ноября 2010

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

Вызов следующим образом: TestDelete.Bat "c: \ DeleteAllFilesExcept", LeaveFile1.txt, LeaveFile2.txt

ATTRIB +H %2
ATTRIB +H %3

erase %1 /A-H

ATTRIB -H %2
ATTRIB -H %3

Конечно, это не будет работать, если вы собираетесьудалить скрытые файлы из каталога.

0 голосов
/ 03 ноября 2010

Нечто подобное может помочь вам начать.

@ECHO OFF
SET RemoveFolder=C:\Temp

MV %RemoveFolder%\1st.file 1st.file
MV %RemoveFolder%\2nd.file 2nd.file
RD /S /Q %RemoveFolder%
IF NOT EXIST %RemoveFolder% MD %RemoveFolder%
MV 1st.File %RemoveFolder%
MV 2nd.File %RemoveFolder%

SET RemoveFolder=
...