
У меня есть папка, которая заполняется автоматически сгенерированными файлами приложением. Там создаются и хранятся расширения csv и png. Нам нужно удалить все файлы в папке, кроме определенных файлов png, имя которых начинается с "abc-". Система представляет собой коробку Windows Server 2012 r2, и цель состоит в том, чтобы делать это через пакетный файл с использованием планировщика задач каждую ночь.
Я пробовал использовать несколько разных скриптов, написанных заранее, но не исключал эти файлы png с префиксами, а только удалял все. Как бы мне это сделать?
решение1
Можете попробовать powershell? Что-то вроде:
$path = "C:\site\temp"
gci -Path $path | ? {!($_.Name -ilike "abc-*.png")} | % { Remove-Item -Path $_.FullName }
решение2
С помощью 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-», чтобы исключить его.
Перед тестированием сделайте резервную копию вашей папки.
решение3
Также, пожалуйста, сделайте резервную копию содержимого папки, с которой вы работаете, перед тестированием.
Шаг первый: Создайте подкаталог в нужной папке.
Шаг второй: Переместите файлы для сохранения в этот подкаталог.
Шаг третий: Удалите все оставшееся в папке.
Шаг четвертый: Переместите файлы из подкаталога обратно в папку.
Шаг пятый: Удалите подкаталог.
Шаг шестой: Посмотрите, что у вас есть.
Ниже приведен простой сценарий.
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