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

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

Автор: res2001
Дата сообщения: 13.01.2011 12:09
Pavlon333
Вот пример прогресс-бара (в прошлой части этой темы пробегал.):

Код: @ECHO OFF
rem Количество экранных символов в одной строке
set ScreenColums=80
rem Установка режима экрана консоли
mode con lines=50 cols=%ScreenColums%
rem Количество итераций
Set cntA=10
set /a "N_Col=%ScreenColums%/%cntA%/2"

for /l %%i in (1,1,%cntA%) do (
    >nul ping -n 1 127.0.0.1
    Call :Bar %%i
)
pause >nul & exit

:Bar
For /L %%a In (1,1,%N_Col%) Do <Nul Set /p "X= Ы"
Set /a prsnt=%1*100/cntA
Title %prsnt%%% Loaded
exit /b
Автор: Pavlon333
Дата сообщения: 13.01.2011 13:20

Цитата:
res2001
Вот пример прогресс-бара (в прошлой части этой темы пробегал.):


А как его привязать к процессу копирования? Чтобы этот прогресс был в течении копирования, а не прерывался ранее?
Автор: djveter
Дата сообщения: 13.01.2011 14:14
Вот задачка:
Создать пакетный файл CONCAT.BAT, который выполнял бы следующую команду (синтаксис CONCAT файл1 файл2 файл3): объединяющее файлы файл1 и файл2 в одно и записывал его под именем файл3. Если файл1 или файл2 не существуют, должно выдаваться соответствующее сообщение "File (имя файла) is not exist."

Подскажите в чем ошибка???


@ echo off
title Vitalik3
if not exist d:\file1.*echo file1
is not exist
if not exist d:\file2.*echo file2
is not exist
copy d:\file1/*d:\file2.+*d:\file3.txt>NUL
echo
pause>NUL
exit
Автор: res2001
Дата сообщения: 13.01.2011 15:59
Pavlon333

Цитата:
А как его привязать к процессу копирования? Чтобы этот прогресс был в течении копирования, а не прерывался ранее?

По простому так (всего 3 итерации на каждое копирование):

Код: @ECHO OFF
rem Количество экранных символов в одной строке
set ScreenColums=80
rem Установка режима экрана консоли
mode con lines=25 cols=%ScreenColums%
rem Количество итераций
Set cntA=3
set /a "N_Col=%ScreenColums%/%cntA%/2"

robocopy \\откуда\ *.doc куда\ /Z /MIR /R:5 /W:15 >nul
Call :Bar 1
robocopy \\откуда\ *.txt куда\ /Z /MIR /R:5 /W:15 >nul
Call :Bar 2
robocopy \\откуда\ *.exe куда\ /Z /MIR /R:5 /W:15 >nul
Call :Bar 3

exit

:Bar
For /L %%a In (1,1,%N_Col%) Do <Nul Set /p "X= Ы"
Set /a prsnt=%1*100/cntA
Title %prsnt%%% Loaded
exit /b
Автор: Pavlon333
Дата сообщения: 13.01.2011 16:56
res2001

то, что нужно. Спасибо.


Автор: djveter
Дата сообщения: 13.01.2011 17:46
res2001

у меня file1 и file2 это конкретные файлы *.txt, но одного из ниможет не существувать и тогда должно появляться сообщение "File (имя файла) is not exist."
Автор: InSe0F
Дата сообщения: 13.01.2011 21:33

Цитата:
InSe0F
что-то типа:
Код:
reg.exe add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /f /v ProxyServer /t reg_sz /d 192.168.1.1:8080


Цитата:
Ну, по аналогии. Только надо знать имя этого параметра. Спроси в топике по реестру или вычисли самостоятельно с помощью regshot

никак не получается, чтобы активировалось. у меня по умолчанию параметр Использовать прокси сервер выключен - и не активируется

Цитата:
Спасибо! Почти работает, только там надо еще удалить как то "AutoConfigURL", т.е. убрать галочку "использовать скрипт автоматической настройки" (

Аналогично с Автоконфигом, никак не могу найти параметр который за него отвечает




Автор: Elroir
Дата сообщения: 14.01.2011 00:05
InSe0F

Цитата:
никак не получается, чтобы активировалось. у меня по умолчанию параметр Использовать прокси сервер выключен - и не активируется
Аналогично с Автоконфигом, никак не могу найти параметр который за него отвечает


Попробуй так:

Код:
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyEnable" /t REG_DWORD /d 00000001 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "ProxyServer" /d 192.168.1.1:8080 /f
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v "AutoConfigURL" /d 192.168.1.1/AutoConfig /f
Автор: res2001
Дата сообщения: 14.01.2011 07:43
djveter

Цитата:
у меня file1 и file2 это конкретные файлы *.txt, но одного из ниможет не существувать и тогда должно появляться сообщение "File (имя файла) is not exist."

Если конкретные, то и дай их конкретное название. Если file1.txt и file2.txt то так:

Код: @ echo off
title Vitalik3
if not exist "d:\file1.txt" echo file1.txt is not exist
if not exist "d:\file2.txt" echo file2.txt is not exist
copy "d:\file1.txt"+"d:\file2.txt" "d:\file3.txt" >NUL
pause>NUL
Автор: Free_Soft
Дата сообщения: 14.01.2011 13:19
кто подскажет, как можно проверить работоспособность wmic? с какими службами она завязана и без каких dll-ек не работает?

Добавлено:

Код: if not exist wmic.exe...
Автор: wolf0425
Дата сообщения: 14.01.2011 13:47

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

sc query WmiApSrv
Автор: Free_Soft
Дата сообщения: 14.01.2011 13:55
wolf0425
пасиб. в принципе, должно хватить?
Автор: Pavlon333
Дата сообщения: 14.01.2011 14:42
Есть bat файл с опциями копирования. Процесс достаточно продолжителен. Сконвертирован в exe с помощью Bat_To_Exe_Converter, т.к. запускается скрытно у пользователей. Плюс еще в экзешник включены командные файлы типа robocopy.exe
Как запретить его повторный запуск в момент выполнения копирования?
Бывает пользователи опять пытаются его запустить ...

Строка с проверкой запущенного процесса, типа:
FOR /F "usebackq" %%i IN (`tasklist^|find /i "test.exe"`) DO goto end
:end

не проходит, т.к. в процессах уже висит этот запущенный экзешник.
Что можно сделать?
Автор: res2001
Дата сообщения: 14.01.2011 14:53
Pavlon333
Посчитай сколько процессов запущено и если больше 1, то goto:eof
Автор: dSasha
Дата сообщения: 15.01.2011 02:41
Windows 7
Пример: wevtutil qe application /q:*[System[(EventID=20225)]] - так работает.
Требуется: отфильтровать по источнику, например - RasClient или по нескольким EventID, например, 20221, 20222 или 20221-20226, или 20221-20222, 20224-20226. Никак не могу понять, как это сделать. В справке даже примера нет. Гуглом вышеприведённый пример нашёл, но мне, тупому, не помогло. Здесь мне не раз помогали. Можете сейчас подсказать? Спасибо!

PS Добавлю сюда же. Нашёл способ фильтровать по списку номеров событий. Например, так:

Цитата:
wevtutil.exe qe application /f:text /q:"*[System[((EventID > 20221 and EventID < 20222) or (EventID > 20224 and EventID < 20227))]]" > %userprofile%\Desktop\file.txt
Вроде бы, просто, для профи. А чайник, как я, поди, догадайся.
Автор: 01MDM
Дата сообщения: 15.01.2011 06:32
dSasha
Что является источником для строк? Это какой-то лог?
Автор: dSasha
Дата сообщения: 15.01.2011 07:13
Да. Журналы Windows. "Просмотр событий":
Цитата:
- System
- Provider
[ Name] RasClient
- EventID 20225
[ Qualifiers] 0
Level 4
Task 0
Keywords 0x80000000000000
- TimeCreated
[ SystemTime] 2011-01-14T21:39:54.000000000Z
EventRecordID 24292
Channel Application
Computer ab
Security
- EventData
{4D6204F7-EE4E-4791-841D-0077838DE4E2}
ab\a
SKYLINK NetWork
TunnelIpAddress = 95.86.214.202 TunnelIpv6Address = None Dial-in User = mobile
Вроде XP-шной eventquery, но там /fo list | find , а тут list нет, только /f:text.
Цитата:
Event[174]:
Log Name: Application
Source: RasClient
Date: 2011-01-15T00:39:54.000
Event ID: 20225
Task: N/A
Level: Сведения
Opcode: Сведения
Keyword: Классический
User: N/A
User Name: N/A
Computer: ab
Description:
CoID={4D6204F7-EE4E-4791-841D-0077838DE4E2}: Пользователь ab\a успешно подключился к серверу удаленного доступа. Имя подключения: SKYLINK NetWork. Параметры подключения:
TunnelIpAddress = 95.86.214.202
TunnelIpv6Address = None
Dial-in User = mobile.
Непонятно, что нужно вписать после /q:.
Автор: Free_Soft
Дата сообщения: 15.01.2011 11:38
Кто подскажет, можно ли управлять из батника групповыми политиками, в частности, политикой автозапуска?
Автор: lorents
Дата сообщения: 15.01.2011 16:59
Добрый день!

Код: for /L %%a in (0,1,3) do for /L %%b in (1,1,9) do for /L %%c in (1,1,9) do for /f "delims=" %%j in ('dir /b /s /a-d %%a%%b%%c\*.png') do (
    echo "%%~fj"
    truepng -zw0 -zs%%a -zc%%b -zm%%c -fe -force "%%~fj" >nul
)
Автор: 01MDM
Дата сообщения: 15.01.2011 17:21
lorents
А где у тебя он прописан? Так бывает когда вызываешь setlocal в цикле и не закрываешь endlocal.
Автор: lorents
Дата сообщения: 15.01.2011 17:48
01MDM
Разобрался, спасибо. я и не заметил
Автор: bomzzz
Дата сообщения: 15.01.2011 17:50
Free_Soft
через вми наверняка можно
Автор: wolf0425
Дата сообщения: 17.01.2011 17:16
как бы получить в переменную время модификации файла с секундами ?
Автор: 01MDM
Дата сообщения: 17.01.2011 18:27
wolf0425,

Код:
wmic datafile where name="Full:\\Path\\To\\file.ext" get lastmodified /value
Автор: Joo1z
Дата сообщения: 18.01.2011 08:38
dSasha
IMHO, в семерке лучше юзать powershell. Глянь ветку по нему, там разбор eventlog'а есть.
Автор: user5nov
Дата сообщения: 18.01.2011 12:01
Здравствуете помогите написать скрипт, наподобии следующего:
for /R "%UserProfile%\Рабочий стол" %%i in (*.*) do if not %%~xi==.lnk del /F /Q "%%~fi"

нехватает в нем удаление папок.
Хотелось бы чтобы ярлыки оставались.
Автор: res2001
Дата сообщения: 18.01.2011 12:20
user5nov

Цитата:
нехватает в нем удаление папок.


Код: for /f %%i in ('dir /b /A:D "%UserProfile%\Рабочий стол" ') do echo rd /s/q "%UserProfile%\Рабочий стол\%%i"
Автор: user5nov
Дата сообщения: 18.01.2011 12:52
res2001

где-то проблема, не отрабатывает по unc пути, грить ненайдена папка с руским именем "Новая папка"
Автор: res2001
Дата сообщения: 18.01.2011 13:04
user5nov
Попробуй так:
for /f "tokens=*" %%i in ('dir /b /A:D "%UserProfile%\Рабочий стол" ') do echo rd /s/q "%UserProfile%\Рабочий стол\%%i"
Автор: user5nov
Дата сообщения: 18.01.2011 13:15
res2001
получилось, но файлы такого типа остаются:
Рисунок OpenDocument.odg, Точечный рисунок.bmp, Лист Microsoft Excel.xlsx

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071

Предыдущая тема: зависает установка Windows XP: 39 минут


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