Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - удалить файлы по маске из каталога

Ответить
Настройки темы
CMD/BAT - удалить файлы по маске из каталога

Новый участник


Сообщения: 11
Благодарности: 0

Профиль | Отправить PM | Цитировать


проблема в том что Del принимает только один параметр. тогда проще может перейти в каталог для удаления и удалить оттуда? просто масок должно быть несколько
Код: Выделить весь код
@echo off

ECHO Program 2
IF '%1'=='' (
    ECHO No args
    GOTO :END
     ) ELSE ( 
     ECHO CHECK
     GOTO :BEGIN )

:BEGIN
DEL %1
SHIFT /1
if '%1'=='' GOTO :END
GOTO :BEGIN
:END
пока что есть только это

Отправлено: 22:32, 15-09-2011

 

Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


При исполнении кода
Код: Выделить весь код
@echo off
SetLocal enabledelayedexpansion

set "dr=%USERPROFILE%\Recent"
for /f "delims=" %%i in ('dir /b/s/a-d "%dr%\*.lnk" 2^>nul') do del /f/q "%%i"
pause
неожиданно обнаружился файл "Письмо «Re_ программа для ПК» — Dmitry Maksimov — Яндекс.Почта.lnk", который не удалился. Подскажите, как унифицировать код, чтобы удалялись файлы, в именах которых есть спецсимволы.

Отправлено: 07:19, 04-09-2012 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


sov44, А зачем через "dir" удалять? Не проще:
Код: Выделить весь код
del /s /a /f "%dr%\*.lnk"

Отправлено: 07:51, 04-09-2012 | #12


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
А зачем через "dir" удалять? »
скрипт ещё считает размер удаляемых файлов. Не показал на примере.

Последний раз редактировалось sov44, 04-09-2012 в 09:33.


Отправлено: 08:32, 04-09-2012 | #13


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


sov44,
Тогда попробуй так:
Код: Выделить весь код
@echo off
SetLocal enabledelayedexpansion

pushd "%USERPROFILE%\Recent" || goto:eof
for /f "tokens=3,4" %%i in ('dir /x /-c /a-d ^| findstr "\.LNK\>"') do (

    echo размер для подсчета: %%i
    del /f /q "%%~fsj"

)
popd
pause

Последний раз редактировалось Foreigner, 04-09-2012 в 10:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:33, 04-09-2012 | #14


Ветеран


Сообщения: 2196
Благодарности: 727

Профиль | Отправить PM | Цитировать


Foreigner, спасибо! То, что надо!

К сожалению не удаётся отладить код, подскажите, в чём ошибка
Код: Выделить весь код
@echo off
SetLocal enabledelayedexpansion

set "dr=%USERPROFILE%\Recent"& call :Calc "!dr!" *.lnk
echo !iSumT!
pause
exit

:Calc
pushd "%1" || goto:eof
for /f "tokens=3,4" %%i in ('dir /x /-c /a-d "%~1" ^| findstr "\%2\>"') do (
       set /a iSumT +=%%i        
       del /f /q "%%~fsj"
)
popd
GoTo :EOF

Последний раз редактировалось sov44, 04-09-2012 в 12:57.


Отправлено: 11:39, 04-09-2012 | #15


Ветеран


Сообщения: 1758
Благодарности: 966

Профиль | Цитировать


sov44, а что конкретно не работает? Пару замечаний:
1. Зачем все писать в одну строку? Такой необходимости вообще нет:
Код: Выделить весь код
set "dr=%USERPROFILE%\Recent"
call :Calc "%dr%" *.lnk
2. Где уверенность, что сумма "iSum" в итоге не превышает 2147483648, что является предельным для cmd.exe? Если надо посчитать, то придется складывать поразрядно. Например так:
Код: Выделить весь код
@echo off
setlocal enabledelayedexpansion

set "num1=0"
set "num2=0"
set "num3=0"

set "num1=000000000000000%1"
set "num1=%num1:~-15%"
set "num2=000000000000000%2"
set "num2=%num2:~-15%"

for /l %%i in (1,1,15) do (

    set /a "sum=!num1:~-%%i,1!+!num2:~-%%i,1!+num3"
    if !sum! geq 10 (set "num3=1" && set /a "sum-=10") else (set "num3=0")
    set "res=!sum!!res!"

)

:zerout
if "%res:~0,1%"=="0" set "res=%res:~1%" && goto:zerout

echo %res%
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:23, 04-09-2012 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - удалить файлы по маске из каталога

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удалить папки по маске run0ut Скриптовые языки администрирования Windows 9 21-03-2017 01:27
CMD/BAT - копирование файлов удовлетворяющих маске из одного каталога в два других Gablik Скриптовые языки администрирования Windows 5 15-09-2011 15:13
Переименовать файлы по маске и времени создания porokh AutoIt 1 18-08-2011 11:13
Как удалить разделы в реестре по маске? TempUser AutoIt 0 14-05-2011 15:49
Удалить файлы в папке по маске Nealles Программирование и базы данных 4 10-09-2003 23:11




 
Переход