|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Удаление файлов в папке и подпапках, содержащих определенную строку |
|
|
CMD/BAT - [решено] Удаление файлов в папке и подпапках, содержащих определенную строку
|
Новый участник Сообщения: 6 |
Добрый день. Уважаемые форумчане, есть проблема. Задача стоит следующим образом: необходимо в конкретной папке и всех подпапках найти и удалить:
1) Пустые (нулевые) файлы 2) Файлы, в которых первый символ - .(точка). Проблема решена лишь частично, сделано удаление пустых файлов в папке и всех подпапках. А вот с удалением файлов, в которых первый символ - точка, не могу до конца разобраться с синтаксисом, хотя наброски уже есть. @Echo Off SetLocal cd /D d:\CSVUpload For /F "Tokens=*" %%A In ('Dir /B /S /AD 2^>nul^|Sort /R') Do ( For /F "Tokens=3*" %%B In ('Dir "%%A" /S /A-D /N /-C 2^>nul^|FindStr /irc:":[0-5][0-9] *0"') Do Del /F /Q "%%A\%%C" 2>nul&&Echo:File %%A\%%C deleted. For /F "Tokens=3*" %%B In ('set /p ff=<%%A\%%C') Do IF %ff:~,1% ==. Del /F /Q "%%A\%%C" 2>nul&&Echo:File %%A\%%C deleted. ) Хотя отдельно от циклов, задача частично решена. Вот код: Этот код ищет первый символ в файле. Вот этот код я и пытался приладить к основному файлу с циклами. Помогите, чем сможете.. |
|
Отправлено: 10:07, 04-12-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата hron66:
|
|
Отправлено: 11:40, 04-12-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Я может как то неправильно объяснил. Имелось в ввиду, первый символ точка не в имени файла, а внутри файла. Если мы открываем файл блокнотом например, то внутри первый символ первой строчки - точка.
|
Отправлено: 11:43, 04-12-2013 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать hron66, ясно. Файлы текстовые? Кодировка их какая?
|
Отправлено: 15:41, 04-12-2013 | #4 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Файлы обычные текстовые. Кодировка тоже стандартная - cp1251.
|
|
Отправлено: 15:55, 04-12-2013 | #5 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать |
Отправлено: 17:03, 04-12-2013 | #6 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать sov44, у меня ваш вариант не работает.. И насколько я понял по коду он расчитан на одну папку (без подпапок). И find ищет все точки в файле, а нужно, чтобы искал только первый символ в файле.
|
Отправлено: 17:12, 04-12-2013 | #7 |
Ветеран Сообщения: 2196
|
Профиль | Отправить PM | Цитировать hron66, не увидел уточнение ТЗ
Цитата hron66:
|
|
Отправлено: 17:32, 04-12-2013 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата hron66:
@echo off
setlocal enableextensions enabledelayedexpansion
for /f "usebackq delims=" %%i in (
`dir /b /s /a:-d "E:\Песочница\0334\*.*"`
) do (
<"%%~i" set /p sValue=
if defined sValue if "!sValue:~0,1!" equ "." echo del /f /q "%%~i"
)
endlocal
exit /b 0
P.S. А что это за файлы? |
|
Отправлено: 18:24, 04-12-2013 | #9 |
Новый участник Сообщения: 6
|
Профиль | Отправить PM | Цитировать Iska, спасибо огромное !!! Ваше решение работает идеально и именно так, как нужно!
P.S. Это файлы по работе, которые приходят с АРМ и загружаются в БД. При этом, непонятно почему, бывают пустые файлы и файлы, содержащие много точек. Они обрабатываются с ошибками, поэтому хотелось сделать батник для удаления таких файлов. Можно бы было решить это все на Дельфи, но не хотелось еще больше грузить сервер задачами. А батник не ест память и работает очень быстро и незаметно. P.P.S. Решение уже запущено в работу. P.P.P.S. Еще раз спасибо всем за помощь! |
Отправлено: 09:26, 05-12-2013 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
удаление папок, содержащих определенные типы файлов | jupiter1976 | AutoIt | 1 | 22-04-2013 23:39 | |
CMD/BAT - [решено] Список файлов в папке и ее подпапках | popt2t | Скриптовые языки администрирования Windows | 9 | 19-02-2013 00:14 | |
CMD/BAT - Удаление всех файлов кроме одного в подпапках | SELFY | Скриптовые языки администрирования Windows | 2 | 29-07-2012 15:34 | |
CMD/BAT - Как прочитать с файла определенную строку | Voshal | Скриптовые языки администрирования Windows | 1 | 27-05-2009 08:24 |
|