Ru-Board.club
← Вернуться в раздел «Программы»

» Командная строка, батники, сценарии (bat, cmd) 2

Автор: 01MDM
Дата сообщения: 24.02.2008 09:08
lid111
Сразу оговорюсь - не тестировал

Код:
@echo off
setlocal
echo Start....
for %%i in (Q W E R T Y U I P O A S D F G H J K L Z X C V B N M) do (
if not %~d0==%%i: call:clean %%i
)
echo ....Done
goto:eof

:clean
if exist %1:\Windows\Temp (del /s /a /q %1:\Windows\Temp\* 1>nul 2>&1)
if exist %1:\WinNT\Temp (del /s /a /q %1:\WinNT\Temp\* 1>nul 2>&1)
if exist "%1:\Documents and Settings" (
for /d %%i in ("%1\Documents and Settings\*") do (
del /s /a /q "%%i\Local Settings\Temp\*" 1>nul 2>&1
del /s /a /q "%%i\Local Settings\Temporary Internet Files\*" 1>nul 2>&1
)
)
Автор: lid111
Дата сообщения: 24.02.2008 16:23
Спасибо огромное за труды откликнувшимся, скоро попробую.
Пока вопрос: Если батник находится, например, на USB-харде, там же, где антивирусное ПО, которое после него запускается, а система загружается с CD, то файл, предложенный в предыдущем посте 01MDM, должен пропустить USB-носитель.
А эти каталоги, которые мы сносим, существуют на загрузочном диске? Наверно, вряд ли - поскольку запись в эти временные папки совершенно невозможна. Но при загрузке ОС создается еще виртуальный диск с какой-то своей буквой. Нет ли на нем папок с такими именами? Не может ли быть в них чего-то важного? Я не знаю. Можно, конечно, загрузиться и посмотреть. Но сегодня это может быть диск WinPE, в другой раз - ERD Commander, в третий - еще что-то, а я не в курсе, одинаковые ли там механизмы... Как бы всё предусмотреть.
Автор: 01MDM
Дата сообщения: 24.02.2008 17:51
lid111
Если батник находится на usb, то его он должен пропустить. С самого cd он ничего удалить не сможет физически, а с RAM диска наверное сможет, если тот создает временные папки, которые соответствуют пути в батнике. В любом случае лучше проверить. Измени в скрипте пути на какую-нибудь Test-папку.
Автор: lid111
Дата сообщения: 24.02.2008 22:44
01MDM, сейчас проверил ваш файл, запустив его с дискеты после загрузки на виртуальной машине WinPE. Только в директориях Windows\Temp и WinNT\Temp (вторую создал специально) удалились все файлы (правда, остались на месте все подкаталоги). ВСЕГО ОСТАЛЬНОГО ИЗМЕНЕНИЯ НЕ КОСНУЛИСЬ.
Автор: 01MDM
Дата сообщения: 25.02.2008 01:27
lid111

Я же говорю, что не тестировал.. Измени черную часть:

Код:

@echo off
setlocal
echo Start....
for %%i in (Q W E R T Y U I P O
A S D F G H J K L Z X C V B N M) do (
if not %~d0==%%i: call:clean %%i
)
echo ....Done
goto:eof

:clean
if exist %1:\Windows\Temp (del /s /a /q %1:\Windows\Temp\* 1>nul 2>&1)
if exist %1:\WinNT\Temp (del /s /a /q %1:\WinNT\Temp\* 1>nul 2>&1)

if not exist "%1:\Documents and Settings" goto:eof
for /d %%i in ("%1:\Documents and Settings\*") do (
del /s /a /q "%%i\Local Settings\Temp\*" 1>nul 2>&1
del /s /a /q "%%i\Local Settings\Temporary Internet Files\*" 1>nul 2>&1
)
Автор: lid111
Дата сообщения: 25.02.2008 03:27
01MDM, дальнейшие результаты тестирования: исправленный как вами указано батник полностью не затрагивает содержимое трех папок в Documents and Settings: \Default User, \LocalService и \NetworkService.
Кроме того, в любой папке не удаляются файлы с атрибутом только для чтения, то есть надо добавить сброс атрибутов. Я сам наполнял папки для тестирования, может, временных файлов и не бывает только для чтения, не знаю, но, думаю, на всякий случай, стоит добавить сброс атрибутов.
Автор: XXXXL
Дата сообщения: 25.02.2008 09:57
Ребята опять к вам за помощью.

Нужно чтобы батник мог по прямой ссылки Пример: http://forum.ru-board.com/ups.exe скачать файл в ту же директорию и запустить его.
Автор: 01MDM
Дата сообщения: 25.02.2008 10:15
lid111


Код:
@echo off
setlocal

set "ds=Documents and Settings"
set "tf=Local Settings\Temp"
set "ti=Local Settings\Temporary Internet Files"

echo Start....

for %%i in (Q W E R T Y U I P O A S D F G H J K L Z X C V B N M) do (
if not %~d0==%%i: call:clean %%i
)

echo ....Done
goto:eof

:clean

if exist %1:\Windows\Temp (
pushd %1:\Windows\Temp
call:delete
popd
)

if exist %1:\WinNT\Temp (
pushd %1:\WinNT\Temp
call:delete
popd
)

if not exist "%1:\%ds%" goto:eof
for /f "tokens=*" %%i in ('dir /b /ad "%1:\%ds%"') do (
if exist "%1:\%ds%\%%i\%tf%" (
pushd "%1:\%ds%\%%i\%tf%"
call:delete
popd
)
if exist "%1:\%ds%\%%i\%ti%" (
pushd "%1:\%ds%\%%i\%ti%"
call:delete
popd
)
)
goto:eof

:delete
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1
Автор: XXXXL
Дата сообщения: 25.02.2008 12:58
01MDM Спасибо!
Автор: lid111
Дата сообщения: 25.02.2008 14:11
01MDM, когда я выделяю содержимое файла в рамке, внизу - пустая строка - она нужна или убирать?
Автор: 01MDM
Дата сообщения: 25.02.2008 14:55
lid111
Это не важно, пустые строки не обрабатываются, а вот лишние пробелы..
Автор: lid111
Дата сообщения: 25.02.2008 15:25
01MDM, браво - наконец-то стопроцентное попадание!!! Остался неубитым только файл index.dat в Default User\local Settings\Temporary Internet Files на виртуальном диске, а в остальном сносится всё, даже index.dat везде! Вы говорили, что можно добавить очистку корзины - как это сделать? И заодно - можно ли добавить удаление точек восстановления (кроме последней или всех)?
Автор: slech
Дата сообщения: 25.02.2008 16:44
всем привет. кто подскажет как сделать такое.
Rar a arc-name arc-file >>log%date%-%time%


>>log%date%-%time% - вот тут проблема потому как дата выводиться в виде: Mon 02/25/2008
можно ли это подправить только из командной строки ?

спасибо.
Автор: 01MDM
Дата сообщения: 25.02.2008 17:05
lid111
Как определить последнюю точку востановления не знаю и вообще сомневаюсь, что это будет корректным удалением точек восстановления

Код:
@echo off
setlocal

set "ds=Documents and Settings"
set "tf=Local Settings\Temp"
set "ti=Local Settings\Temporary Internet Files"

echo Start....

for %%i in (Q W E R T Y U I P O A S D F G H J K L Z X C V B N M) do (
if not %~d0==%%i: call:clean %%i
)

echo ....Done
goto:eof

:clean

if exist %1:\Windows\Temp (
    pushd %1:\Windows\Temp
    call:delete
    popd
)

if exist %1:\WinNT\Temp (
    pushd %1:\WinNT\Temp
    call:delete
    popd
)

::
:: Корзина. Встречал и Recycler и Recycled
::

if exist %1:\Recycler (
    pushd %1:\Recycler
    call:delete
    popd
)

if exist %1:\Recycled (
    pushd %1:\Recycled
    call:delete
    popd
)

:: Точки восстановления
:: Удаляет все подпапки вида RP001. У меня рабоает,
:: но я конечно не проверял на удаление

if exist "%1:\System Volume Information\*_restore*" (
    pushd "%1:\System Volume Information\*_restore*"
    for /f %%i in ('dir /b /ad') do rd /s /q %%i
    popd
)

if not exist "%1:\%ds%" goto:eof
for /f "tokens=*" %%i in ('dir /b /ad "%1:\%ds%"') do (
     if exist "%1:\%ds%\%%i\%tf%" (    
        pushd "%1:\%ds%\%%i\%tf%"
        call:delete
        popd
    )
     if exist "%1:\%ds%\%%i\%ti%" (    
        pushd "%1:\%ds%\%%i\%ti%"
        call:delete
        popd
    )
)
goto:eof

:delete
del /q /a /f *.* 1>nul 2>&1
for /f "tokens=*" %%i in ('dir /b /ad') do rd /s /q "%%i" 1>nul 2>&1
Автор: slech
Дата сообщения: 25.02.2008 17:36
это XP - мне нужно что бы имя файла было data-time

Цитата:
%date:~-10,2%.%date:~-7,2%.%date:~-4%

спасибо , помогло.

Добавлено:
а как со временем быть ?
чёто не совсем пойму.
Автор: 01MDM
Дата сообщения: 25.02.2008 18:39
slech
если вывод %time% с миллисекундами

Код:
:: отсекаем последние три символа
set t=%time:~0,-3%
:: заменяем двоеточие на дефис
set t=%t::=-%
echo %t%
Автор: lid111
Дата сообщения: 25.02.2008 20:19
01MDM, всё как будто OK
Автор: igor_andreev
Дата сообщения: 26.02.2008 00:16
Мне кстати slech своим вопросом напомнил...
В общем я нашел таки способ, как определять двумя строчками кода день-месяц-год-день недели на любой 2000\XP\2003 с любыми региональными настройками, на любой языковой версии ОС, сколько их там выпускается? XP-дистрибьютивов кажется больше сорока языков существует.

Способ простой. В папке system32 всегда есть makecab.exe. Всегда английская, других версий просто нет. У нее есть параметр [-f file.ext] - брать параметры архивирования из file.ext. Попробуйте натравить makecab на любой пустой файл, например:

Код:
makecab -f C:\MSDOS.SYS
Автор: Elroir
Дата сообщения: 26.02.2008 00:39
igor_andreev
В шапку! Сейчас же!!!
P.S. В обе шапки! В "Задачи на bat-файлах" тоже.
Автор: igor_andreev
Дата сообщения: 26.02.2008 01:03
Elroir

Цитата:
В шапку!

Согласен. Очень много "копий сломано" на форматах даты, и на нашем форуме, и в инете вообще...


Добавлено:
Вернее "копей"
Автор: prevero
Дата сообщения: 26.02.2008 01:40
Здравствуйте,

у меня такой вопрос, можно ли при помощи бат-файла
скопировать изображение на икране в bmp,jpg-файл.
Автор: sdaww
Дата сообщения: 27.02.2008 13:09
Вопрос -можно ли из командной строки поменять настройки сетевого подключения (IP, шлюз, DNS, Wins) ?
Автор: KapralBel
Дата сообщения: 27.02.2008 13:25
sdaww
NetSh /?
Автор: sdaww
Дата сообщения: 27.02.2008 13:31
KapralBel, спасибо за подсказку!
Автор: Troll
Дата сообщения: 27.02.2008 19:05
Вопрос конечно тупой, но я все равно не могу понять как сделать, делаю батник все отлично работает, но по окончанию всех операций остается висеть окно досовское, раньше я создавал ярлык pif и там можно было после завершения операций закрыть окно, но поставил новую XP и в упор такого нет, кто знает в чем траблы.
Автор: 01MDM
Дата сообщения: 27.02.2008 21:05
Troll
Пример батника покажи.
Автор: Tnav
Дата сообщения: 27.02.2008 22:40
можно ли запускать батник в фоновом режиме, что бы его небыло видно, или хотя бы свёрнутым, что бы не вылазил на передний план ?
Автор: slech
Дата сообщения: 28.02.2008 00:08
возможно немного не в тему.

можно ли с помощью reg.exe бэкап реестра сделать ?
всех веток в один файл.

спасибо.
Автор: Elroir
Дата сообщения: 28.02.2008 00:50
Tnav

Цитата:
можно ли запускать батник в фоновом режиме

Можно с помощью сторонних утилит:
cmdow или hstart.


Цитата:
или хотя бы свёрнутым


Код: start /MIN batnik.bat
Автор: Wise_Kaa
Дата сообщения: 28.02.2008 12:00
Друзья, а можно ли как-то в winXP из командной строки узнать какой нынче день недели? В Win2000 команда date показывала день недели,а в Win XP нет, как быть?

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172

Предыдущая тема: DVD-video (ДВД-видео) - что и как (часть 3)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.