4

У меня есть папка, которая заполняется автоматически сгенерированными файлами приложением. Существуют расширения CSV и PNG, которые создаются и хранятся там. Нам нужно удалить все файлы в папке, кроме определенных файлов PNG, где имя файла начинается с «abc-». Система представляет собой Windows Server 2012 r2 box, и цель состоит в том, чтобы сделать это через пакетный файл, используя планировщик задач каждую ночь.

Я попытался использовать несколько различных сценариев, предварительно написанных, но не исключил бы эти файлы с префиксом PNG, только удалить все. Как бы я пошел по этому поводу?

3 ответа3

1

Можете ли вы попробовать PowerShell? Что-то вроде:

$path = "C:\site\temp"
gci -Path $path | ? {!($_.Name -ilike "abc-*.png")} | % { Remove-Item -Path $_.FullName }
0

С Batch вы можете сделать это следующим образом:

@Echo OFF 

For %%# In ("*.*") DO (
    If /I "%%~x#" EQU ".png" (
        (Echo "%%~n#"| Findstr "^abc-")1>nul 2>&1 || (
            Del /Q "%%~#"
        )
    )
)


Pause&Exit

Я перебираю все файлы (которые имеют расширение), затем, если файл имеет расширение «.png», я оцениваю, начинается ли имя файла с «abc-», чтобы исключить его.

Пожалуйста, сделайте резервную копию вашей папки перед тестированием.

0

Также, пожалуйста, сделайте резервную копию содержимого папки, над которой вы работаете, перед тестированием.

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

Простой скрипт следует.

REM C:\SCRIPTS\MOVERPNG.CMD
C:
ECHO OFF
CLS
CD \SITE\TEMP 
MD BAR  
MOVE /y ABC-*.PNG \SITE\TEMP\BAR  
DEL /y *.PNG  
DEL /y *.CSV  
CD BAR  
MOVE *.PNG C:\SITE\TEMP 
CD ..  
RD /q BAR
ECHO MOVERPNG has completed.
DIR *.* /P /O:N 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .