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

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

Ответить
Настройки темы
CMD/BAT - Проверка в каталогах файлов с расширением .tmp

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


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

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


Написать пакетный файл, который будет проверять в каталогах, указанных в качестве параметров, наличие файлов с расширением .TMP и удалять их. Если пути поиска не заданы, вывести сообщение. Создать протокол удаляемых файлов.
Вот,что я набросал,но что-то не создается файл protocol.txt,где,что я забыл?
Код: Выделить весь код
@echo off 
set d=D:\1
If Exist   %file% Goto Loop 
:Loop
del /s D:\1\*.tmp 
>protocol.txt
Спасибо.

Отправлено: 21:55, 12-03-2014

 

Ветеран


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

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


Код: Выделить весь код
@echo off
chcp 1251>nul

set d=D:\1
set file=*.tmp

del /s "%d%\%file%">protocol.txt
exit /b

Отправлено: 23:21, 12-03-2014 | #2



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

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


Ветеран


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

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


Цитата upward:
что я забыл? »
Указать, чей stdout перенаправлять в файл. И ещё кучу всего прочего.

Отправлено: 23:25, 12-03-2014 | #3


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


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

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


Iska, подскажите,а как организовать обработчик ошибок?
2.12. Протестировать разработанные командные файлы при различных исходных данных: без параметров, при некорректно заданных параметрах, при различном количестве параметров.

Последний раз редактировалось upward, 13-03-2014 в 14:16.


Отправлено: 10:32, 13-03-2014 | #4


Пользователь


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

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


Georgio, насчёт вот этой строчки:
Цитата Georgio:
chcp 1251>nul »
Сколько лет я пишу bat-файлы - ни разу необходимости в этой строке не было. Просто создаю их в кодировке ASCII, которую Microsoft зачем-то переименовала в OEM. При этом, когда я пробовал вставить такую строку, это никак не меняло дела, и всё равно, для того, чтобы русский текст выводился не зюками, приходилось создавать файл в ASCII.
Многие рекомендуют эту строку, но я никак не пойму, почему.

Хотя вот сейчас попробовал добавить эту строчку, и, действительно, пришлось перевести в ANSI. Возможно, что раньше я как-то не так проверял. Подумаю, не стоит ли перейти на такой вариант. Но пока меня кодировка ASCII устраивала.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Последний раз редактировалось Гуллипут, 16-03-2014 в 15:37.


Отправлено: 15:22, 16-03-2014 | #5


Пользователь


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

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


Код: Выделить весь код
@echo off 
set pathes=%*

setlocal EnableExtensions
if not defined pathes set /P pathes=Введите список путей, разделённых пробелами: 

copy nul protocol.txt

for %%d in (%pathes%) do (
  If Exist  %%d\*.tmp ( 
    for %%f in (%%d\*.tmp) do (
      del /q "%%f"
      if not exist "%%f" (echo %%f >>protocol.txt ) else (echo не удалось удалить %%f >>protocol.txt)
    )
  )
)
Вот такой вариант должен работать. При этом, если в путь входит пробел, значит, надо заключить этот путь в кавычки.
Пришлось немного повозиться, зато теперь взял на вооружение ещё одну возможность, которую знал, но пока не использовал: if not defined.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Последний раз редактировалось Гуллипут, 16-03-2014 в 16:04.


Отправлено: 15:39, 16-03-2014 | #6


Пользователь


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

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


Цитата Georgio:
del /s "%d%\%file%">protocol.txt »
А такой вариант я проверил, но, даже если файл занят и не удалился, всё равно выдаётся сообщение, что он удалён.
Хотя не знаю, насколько это важно, поскольку после того, как его освободили, он всё равно удалился. Видимо, NTFS пометила его на удаление при первой возможности.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Отправлено: 16:04, 16-03-2014 | #7


Аватара для ShaddyR

Железных Дел Мастер


Moderator


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

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


Мне тут, походу, скучно было... вот результат:
Код: Выделить весь код
@echo off & set dpath=D:\1\
set dext=*.tmp
set msgtop=Протокол очистки папки "%dpath%" от файлов %dext% ( %date% %time% )
set msgbtm=Работа скрипта завершена.
set err1=Указанная папка не существует либо доступ к ней запрещен!
set err2=Файлы указанного типа не обнаружены!
echo %msgtop% &echo. &cd %dpath% || echo %err1% &&echo. &&echo %msgbtm% &&exit 1
echo %msgtop%>%~dp0\protocol.txt &echo. >>%~dp0\protocol.txt &del /s /q "%dpath%\%dext%" >>%~dp0\protocol.txt &findstr ^Удален %~dp0\protocol.txt ||echo %err2% &&echo %err2% >>%~dp0\protocol.txt
echo. &echo. >>%~dp0\protocol.txt &echo %msgbtm% &echo %msgbtm% >>%~dp0\protocol.txt &echo. &set /p prmt=Вывести на экран протокол?[1] 
if %prmt%==1 cls &type %~dp0\protocol.txt &pause
Цитата Гуллипут:
Видимо, NTFS пометила его на удаление при первой возможности. »
файловая система не занимается ничем подобным. Файл был удален родительским процессом - программой, которой был создан.

-------
[FAQ] Как определить аппаратную конфигурацию компьютера и правильно задать вопрос
-------
В благодарность за помощь нажимаем ссылочку "Полезное сообщение" внизу этого самого сообщения (подробнее). Помните: админ конфеты НЕ ПЬЁТ ;)
-------
Говори, что думаешь и думай, что говоришь! (c) || МОЙ ShaddyR.at.UA/blog - Новая метла и инвентаризация)


Отправлено: 17:59, 16-03-2014 | #8


Пользователь


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

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


Цитата ShaddyR:
файловая система не занимается ничем подобным. Файл был удален родительским процессом - программой, которой был создан. »
Ничего подобного. Я знаю, что говорю: создавал файл для тестирования я сам, сделал его занятым с помощью просмотра в Far Manager, затем прогнал bat-файл, проверил, что tmp-файл не удалился, затем освободил tmp-файл - и он сразу же исчез. Возможно только, что это сделала ОС, а не файловая система. Но я помню, что именно в NTFS была какая-то возможность заказать отложенное удаление занятого файла, поэтому считаю, что это была файловая система.

-------
Разумный человек приспосабливается к миру, неразумный пытается приспособить мир к себе. Поэтому прогресс делают люди неразумные. (Дж. Б. Шоу)


Отправлено: 23:07, 16-03-2014 | #9


Ветеран


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

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


Цитата Гуллипут:
сделал его занятым с помощью просмотра в Far Manager »
viewer.cpp:
Код: Выделить весь код
ViewFile.Open(strFileName, FILE_READ_DATA, FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE, nullptr, OPEN_EXISTING);

Отправлено: 00:31, 17-03-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - проверять в каталогах наличие файлов с расширением .TMP и удалять их upward Скриптовые языки администрирования Windows 2 12-03-2014 04:58
Любой язык - [решено] Сравнение файлов в каталогах. NikolayHAOS Скриптовые языки администрирования Windows 21 18-11-2013 23:37
CMD/BAT - Поиск и проверка сегодняшних файлов в динамических каталогах rudimko Скриптовые языки администрирования Windows 4 10-09-2012 20:55
[решено] Запуск .exe с расширением tmp morgan1991 AutoIt 1 22-04-2009 15:53
Открытие файла с расширением tmp Vsevolod Вебмастеру 5 16-06-2003 17:14




 
Переход