Ru-Board.club
← Вернуться в раздел «Microsoft Windows»

» Задачи на bat-файлах 7

Автор: 01MDM
Дата сообщения: 20.07.2009 14:41
sergxz
Вроде так работало:

Код:
net use k: /delete /yes
Автор: ProbaRK
Дата сообщения: 20.07.2009 20:26
sergxz

Может так подойдет:
(привожу пример обновления ключа DrWEB 4.44)


Код:
    @echo off
    cls
    echo.
    echo. ключ drweb32.key должен лежать вместе с пакетником
    echo.
    echo.
    echo.
    echo.
    echo.

    net view | for /F "tokens=1 delims=\\ " %%c in ('@find "\\"') do @(
    xcopy drweb32.key "\\%%c\c$\Program Files\DrWeb" /r /y
    )
    echo.
    echo.
    pause
Автор: 2life
Дата сообщения: 20.07.2009 22:23

Цитата:
NvvLazyTiger

Спасибо за помощъ в решении вопроса, многое уже использую, но есть еще кое что:
- Касаемо 1с вопросов нет, процедура стандартная совершенно.
- Думаю от танцев с получением времени можно отказатся, т.к. есть rar с командой -ag.
- Хочется знать, как проверить отключение диска с помощъю (%ErrorLevel%)? Или лучше сделать это с помощью проверки папки? Как видно диск подключается к последней папке с файлами архивов, хотя можно наверное создать пустой каталог, и по нему проверять... Но формат команды, мне неизвестен, не той не другой(%ErrorLevel%).

Вот, что имеется на текущий момент

Цитата:
@echo off
REM 1c_upload_started
"C:\Program Files\1Cv77\BIN\1cv7s.exe" config /D"F:\Base1C\PRBasic\" /Nбекапюзер /Pпароль /@f:\backup\zik-current\zik.prm
cls
REM upload_transfer_to_backup_srv_started
net use Z: \\192.168.1.200\bk\ZiKCurr /user:user1 passw0rd
"C:\Program Files\WinRAR\rar.exe" a -y -dh -ep -pПароль -agYYYYMMDD_HH_MI_SS "Z:\zik" "D:\BACKUP\zik"
cls
REM file_counter_start
set nCount=0
for %%a in (Z:\zik*.Rar) do call :ChkDel %%a
goto :EndChkDel

:ChkDel Kill 61-th file
set /a nCount+=1
if %nCount% LEQ 60 goto :eof
erase %1
goto :eof

:EndChkDel
cls
Echo Y | net use Z: /delete

Автор: ForposT_ForeveR
Дата сообщения: 20.07.2009 23:13
Здравствуйте.
Подскажите пожалуйста, как скопировать из папки, где находится бат файл в папку c:\test
Файлы
1.txt,2.txt ..10000.txt
1-lala.txt,2-lala.txt .. 10000-lala.txt
Автор: king_stiven
Дата сообщения: 21.07.2009 00:48
ForposT_ForeveR

Код: @echo off
for /l %%e in (1,1,10000) do (
copy %%e.txt c:\test
copy %%e-lala.txt c:\test
)
Автор: NvvLazyTiger
Дата сообщения: 21.07.2009 08:16
2life
Цитата:
- Хочется знать, как проверить отключение диска с помощъю (%ErrorLevel%)? Или лучше сделать это с помощью проверки папки? Как видно диск подключается к последней папке с файлами архивов, хотя можно наверное создать пустой каталог, и по нему проверять... Но формат команды, мне неизвестен, не той не другой(%ErrorLevel%)

0. Я педант, поэтому обычно пишу много... ;)

1. Как "лучше сделать это", - зависит от множества разных обстоятельств. Начиная со среды исполнения + условий использования того или иного технического решения, и, заканчивая квалификацией разработчика/эксплуатационного персонала. А ещё есть вкусовые предпочтения, т.к. одно и тоже обычно можно сделать по-разному...

Например: *.CMD, пускаемый однократно (автором, "на коленке"), и аналогичный (делающий тоже самое), но работающий на сервере в автоматическом необслуживаемом режиме, - это "две большие разницы".

Так что ниже идут некоторые практические соображения, касаемо именно серверных решений, работающих годами в разных местах под w2k & w2k3.

2. Общие соображения (касаемо *.CMD):

А) Т.к. "разбор полётов" (при авариях) обычно выполняется в цейтноте и post factum, то совершенно обязательно максимально подробное протоколирование (занесение в лог) всего, что доступно в процессе. Бо далеко не всегда возможно повторение "на бис".

В большинстве случаев достаточно перенаправлять в лог выдачу команд (StdOut & StdErr), например:
Код: net use %myRemoteShare% /delete >> %MyLog% 2>>&1
Автор: HaK1R
Дата сообщения: 21.07.2009 08:54
NvvLazyTiger

Цитата:
Я педант, поэтому обычно пишу много...

о, написал-то! а скока писал по времени?
Автор: NvvLazyTiger
Дата сообщения: 21.07.2009 09:13
HaK1R
Цитата:
о, написал-то! а скока писал по времени?

Примерно 10 часов с перерывами (на неотложные действия). В среднем - примерно час на каждые 6-10 строк серьёзного текста. Уже много лет... ;)

Поэтому, писать - терпеть не переношу! ;)))
Автор: Ohripshiy
Дата сообщения: 21.07.2009 10:08
Своего Мозга не хватает... может поможете вы...
Ситуация: есть отшареный раздел "g:", у всех он виден как сетевой диск "обменник"
Очистка осуществляется вручную путем очистки папки с названием "мусор" и закидванием туда всего, что находится в корне..., папка мусор находится в этом же разделе...
Нужен батник, который делал бы это за меня... (в планировщик его вотну с периодом в 2 недели...
За ранее спасибо...
Автор: wolf0425
Дата сообщения: 21.07.2009 11:42
Ohripshiy если можно удалить старую мусорницу (а не чистить) то так:

Код: @echo off
rd /s /q g:\мусор
md g:\мусор
for /f "delims=" %%a in ('dir /b /s g:\') do if not "%%a"=="g:\мусор" move "%%a" g:\мусор
Автор: 2life
Дата сообщения: 21.07.2009 12:22
Вот это работа NvvLazyTiger! Я еще переваривать буду несколько дней, что написано. По поводу пункта

Цитата:
Б) Я не вижу смысла использовать планирование на буквы устройств (например, на Z, если это не требуется для какой-то особой ситуации. Бо большинство известных мне команд (и даже серьёзных приложений) прекрасно работает (если доступ уже обеспечен) по полным путям типа \\Server\Share\Dir\File. А буквы, - это ограниченный ресурс...


Именно нужно использовать как подключаемый диск, потому что это сервер архивации, не включенный в AD, соответственно это более простой вариант.
Автор: Eklectic
Дата сообщения: 21.07.2009 12:22
Товарищи, подскажите
Есть ли возможность получить список системных общих папок или список логических дисков другого компа в сети??

Задача стоит: найти все файлы в сети с определённым расширением (именно во всей сети, не только в расшареных файлах)

Моё решение (на данный момент):
с помощью Net View получаю список компов в сети, получаю список локальных дисков (здесь собсно затык), паролем от администратора домена монтирую сетевой диск из всем системных шар поочерёдно (по-идее у каждого локального диска есть системная шара, если конечно специально не отключена) и ищу на этом диске файлы.

Если есть мысли, советы или я где-то ошибся - с удовольствием выслушаю
Автор: NvvLazyTiger
Дата сообщения: 21.07.2009 13:31
2life
Цитата:
Именно нужно использовать как подключаемый диск, потому что это сервер архивации, не включенный в AD, соответственно это более простой вариант

... Возможно (т.е. - "дело вкуса", на мой взгляд;), но...

У меня есть несколько автоматически обслуживаемых удалённых ресурсов, доступных только по прямому IP (т.е. включённых в общую ЛВС по каким-то своим, "особым" правилам и законам). С буквами,.. - была бы отдельная, дополнительная морока (в этих букв управлении), включая нейтрализацию последствий аварий.

А так (т.е. без букв) - всё работает "на ура". Т.е. AD здесь ни при чём... IMHO ;)
Автор: 1KACH
Дата сообщения: 21.07.2009 13:54
Помогите написать батничик
1Проходит очистка папки C:\WINDOWS\Temp\
2проходит сверка системной даты и если она более чем допустим 01.09.2009 происходит очистка всех файлов в папках C:\xxxx\xxxxx\ а также на на E: все файлы только с расширением txt
Автор: king_stiven
Дата сообщения: 21.07.2009 15:58
1KACH
Всё в шапочке есть.
Автор: sergxz
Дата сообщения: 21.07.2009 16:44
01MDM
[
Цитата:
net use k: /delete /yes

Так получилось! Ура!
Автор: king_stiven
Дата сообщения: 22.07.2009 08:32
[more=Внёс изменение в Работа с текстом, датой, и файлами в шапке]
Автор igor_andreev

Пример, нужно показать сообщение для всех файлов в каталоге, у которых дата создания старее, чем 14 дней назад.
код1

Код: @echo off
echo WScript.Quit (DateDiff("d", CreateObject("Scripting.FileSystemObject").GetFile(WScript.Arguments.Item(0)).DateCreated, Now))>"%temp%\timediff.vbs"

for %%a in (*.*) do (
set "fgh=%%a"
call :compare_crdate
)
del "%temp%\timediff.vbs"
goto :eof

:compare_crdate
cscript //nologo "%temp%\timediff.vbs" "%fgh%"
if %errorlevel% gtr 14 echo %fgh% created more than 14 days ago
Автор: madmasles
Дата сообщения: 22.07.2009 16:51
Помогите, пожалуйста, в следующем вопросе.

Возможно ли батником или скриптом найти и удалить папки названия которых известно ("ХХХ УУУ", т.е. названия могут быть с пробелами), а месторасположение известно только, что это %SystemDrive%. Третий день пытаюсь, ничего не получается.

Заранее спасибо.
Автор: 01MDM
Дата сообщения: 22.07.2009 18:12
madmasles

Код:
for /f "tokens=*" %%i in ('dir /b /s /a:d "%systemdrive%\XXX YYY"') do rd /s /q "%%~fi"
Автор: wolf0425
Дата сообщения: 22.07.2009 18:19
madmasles ты хочешь папки, имеющие имя "ХХХ УУУ", удалить (с содержимым) по всему диску?

Код: cd /d %SystemDrive%\
for /f "delims=" %%a in ('dir /s /b /a:d "ХХХ УУУ" ') do rd /s /q "%%a"
Автор: madmasles
Дата сообщения: 22.07.2009 18:25
wolf0425
01MDM
Большое спасибо, буду эксперементировать. А папки удаляются со всем содержимым.

Подскажите, кто знает, где бы поподробнее (для чайников) почитать про for, а то я в стандартной справке не очень все понимаю.


Добавлено:
01MDM
wolf0425
Я ничего не понимаю.
Не удаляются папки и все. Ни первым, ни вторым кодом. Даже в корне не удаляет. Я для проверки понапихал по всему диску в подпапки одинаковых папок. Так они все на месте. Они и пустые были, и с содержимым. Как я понял, код должен искать на диске и во всех подпапках? Может я что-то не так делаю. Посоветуйте, пожалуйста.

Автор: 01MDM
Дата сообщения: 22.07.2009 19:56
madmasles
А папки с кирилицей в названии или в пути к папке?

Код:
@echo off
chcp 1251 1>nul
for /f "tokens=*" %%i in ('dir /b /s /a:d "%systemdrive%\ХХХ УУУ"') do rd /s /q "%%i"
Автор: madmasles
Дата сообщения: 22.07.2009 20:10
01MDM
Папки называл и кирилицей и латиницей, все равно не удаляет. Ничего не понимаю.

Мне кажется, что вообще не работает. Я на следующей строке добавил pause, так окно появляется с "нажмите любую клавишу..."

Когда добавляю chcp 1251 1>nul на экране - кракозябры. У меня и системный диск и пользователь кирилицей обозван, может в этом какая-то проблема?
Автор: 01MDM
Дата сообщения: 22.07.2009 21:42
madmasles
Все должно отрабатывать. Убери @echo off и посмотри какие возникают ошибки.
Автор: madmasles
Дата сообщения: 22.07.2009 22:36
01MDM
Ошибок никаких не возникает. Я бы скриншот прикрепил, но не знаю как.
На экране выводится код и с новой строки "нажмите любую клавишу..."
Такое впечатление, что ком. строка воспринимает код как обыкновенный текст.
Автор: 01MDM
Дата сообщения: 22.07.2009 23:10
madmasles

Цитата:
Такое впечатление, что ком. строка воспринимает код как обыкновенный текст.

Ничего не понял. Опиши как ты все делаешь. Какая у тебе виндовс?
Автор: madmasles
Дата сообщения: 23.07.2009 00:40
01MDM

Стоит Windows XP SP3.
А вот что получается на экране менее чем за секунду:

[more]
C:\Documents and Settings\Не Шилов\Рабочий стол>chcp 1251 1>nul

C:\Documents and Settings\═х ╪шыют\╨рсюўшщ ёЄюы>for /F "tokens=*" %i in ('dir /b
/s /a:d "C:\z1z2z3"') do rd /s /q "%i"

C:\Documents and Settings\═х ╪шыют\╨рсюўшщ ёЄюы>chcp 866 1>nul

C:\Documents and Settings\Не Шилов\Рабочий стол>pause
Для продолжения нажмите любую клавишу . . .
[more]
Не понимаю, как это в теги заключить.

PS
В конце строк пробелы удалил.
Вместо Блокнота Акелпад.
Сохраняю как xxx.cmd
То, что выше появляется менее, чем через секунду.
Ничего не понимаю.
Автор: 01MDM
Дата сообщения: 23.07.2009 06:23
madmasles
Если в акелпаде сохраняешь в кодировке 866, тогда убери chcp 1251
Попробуй выполнить из консоли, не из батника:

Код:
C:\> for /f "tokens=*" %i in ('dir /b /s /a:d "%systemdrive%\z1z2z3"') do rd /s /q "%i"
Автор: smirnvlad
Дата сообщения: 23.07.2009 07:05
madmasles

попробуй так

Код:
@echo off
for /f "tokens=*" %%i in ('dir /b /s /a:d "%systemdrive%\" ^|findstr /E "\\ХХХ УУУ"') do @echo "%%i" & rd /s /q "%%i"
Автор: Ohripshiy
Дата сообщения: 23.07.2009 07:55
wolf0425
Спасибо огромное - именно то, что надо было!

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778

Предыдущая тема: во вкладке автозагрузка


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