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

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

Автор: Elroir
Дата сообщения: 18.05.2008 02:17
SymA

Цитата:
| - выполняется следующая команда, если предыдущая выполнена успешно ?

Нет. "|" - это символ конвейера. То есть вывод команды слева от ""|" передается на вход команды справа.


Цитата:
То что пинг не проходит на mail.ru; rambler.ru; microsoft.com; google.com и другие хосты - следствие их защиты?

Понятия не имею. Это могут быть твои локальные заморочки, провайдера, этих хостов или чего-нибудь другого. У меня из того списка, который ты привел, не пингуется только microsoft.
Автор: JI063uk
Дата сообщения: 19.05.2008 12:53
Помдскажите плиз где тут ошибка

@echo off
for /f "tokens=*" %%i in (1.txt) do (
shutdown -m "\\%%i" -s -f -t 40 -c "текст"
)
Автор: KapralBel
Дата сообщения: 19.05.2008 14:10
JI063uk
А что не работает

Кстати писать в двух темах (эта и Командная строка, батники, сценарии (bat, cmd) 2) не обязательно )
Все равно будут помогать одни и теже
Автор: Joolz
Дата сообщения: 19.05.2008 14:10
Можно ли с помощью cmd комманд/утилит извлекать/изменять информацию, находящуюся в свойствах файла на вкладке "Сводка" (WinXP)???
Автор: JI063uk
Дата сообщения: 19.05.2008 14:13

Цитата:
KapralBel


это я уже понял просто запарился
А батник не запускаеться и все тут моргнет черный экран и все
Автор: Serg41
Дата сообщения: 19.05.2008 15:21
Добрый день. У меня экзотичный вопрос, реально ли такое и как сделать:

меняется файл сервер и вся инфа будет лежать по другому пути, например было \\server1\dat\... стало \\server2\data...

вопрос:
-как поменять у всех пользователей путь в ярлыках, при условии что они у них хранятся локально - это 1
-как поменять ссылки на файлы в Excel файликах (т.е. в формулах) - это 2

Вот такая заморочка
Автор: Joolz
Дата сообщения: 19.05.2008 15:27
Serg41
IMHO это не сюда, вам к гуру VB-Script нужно.

to ALL
Ресурс по CMD командам и утилитам.
Там же по WMIC
Автор: el mentiroso
Дата сообщения: 19.05.2008 16:59
Не знаю надо кому или нет:
батник удаляет файлы старше определенного числа дней. маска файлов, целевая папка и число дней задаются параметрами
fixed mk II

Код:
@echo off

if "%1" == "" (
    @echo Пропущен обязательный параметр: папка с файлами
    set err=1
)
if "%2" == "" (
    @echo Пропущен обязательный параметр: маска файла
    set err=1
)
if "%3" == "" (
    @echo Пропущен обязательный параметр: число дней
    set err=1
)
if "%err%"=="1" (echo Пример использования: %~nx0 c:\temp\ ^*.tmp 7
        goto :eof)
set /a opt3=%3
if "%date:~3,1%"=="0" (
    set c_mm=%date:~4,1%
) else (
set c_mm=%date:~3,2%)

if "%date:~0,1%"=="0" (
    set c_dd=%date:~1,1%
) else (
set c_dd=%date:~0,2%)

set /a c_date=%date:~6,4%*365+%c_mm%*30+%c_dd%

For %%a In (%~dp1%2) Do @Call :killall %%a %%~ta
GoTo :EOF
:killall
set f_name=%1
set f_date=%2

if "%f_date:~3,1%"=="0" (
    set f_mm=%f_date:~4,1%
) else (
set f_mm=%f_date:~3,2%)

if "%f_date:~0,1%"=="0" (
    set f_dd=%f_date:~1,1%
) else (
set f_dd=%f_date:~0,2%)

set /a f_date=%f_date:~6,4%*365+%f_mm%*30+%f_dd%
set /a d_calc=%c_date%-%f_date%
if /i %d_calc% GEQ %opt3% del %f_name%
GoTo :EOF
Автор: Elroir
Дата сообщения: 19.05.2008 17:27
el mentiroso
Ты уверен, что твой алгоритм работает правильно?
Автор: igor_andreev
Дата сообщения: 19.05.2008 17:44
el mentiroso

Цитата:
set /a d_calc=%c_date%-%f_date%

19 мая 2008 сегодня, c_date равен 20080519
Файл создан(ну и изменен) 20 дней назад, 30 апреля 2008, f_date равен 20080430
А теперь отними, 20080519-20080430. d_calc будет равен однако 89, а не 20
Такая вот печальная стори
Автор: 01MDM
Дата сообщения: 19.05.2008 17:50
el mentiroso


Код:
%3=10
с_date=20080401
f_date=20080331

set /a d_calc=20080401-20080331

if /i 70 GEQ 10 del %f_name%

Автор: king_stiven
Дата сообщения: 19.05.2008 20:09
01MDM

Цитата:
Как все сразу отреагировали

Да ведь всё это уже в шапке есть, и есть уже вполне надёжные скрипты, работающие вне зависимости от оси. Хотя если кому то хочется попрактиковаться, а не для работы, пожалуйста.
Автор: spstoyan
Дата сообщения: 19.05.2008 22:07
Что-то сбилось в настройках кодировки...
Если создать BAT-файл с одной строкой
@echo абвгде
и потом его запустить, то на экран выводится
рстуфх
Причем если эту же команду набрать напрямую из командной строки - все отображается нормально...
Подскажите, где искать, как вылечить?
ОС Windows XP pro rus SP2, других проблем с кодировкой не наблюдается...
Автор: king_stiven
Дата сообщения: 19.05.2008 22:45
spstoyan
Сохраняй батник в dos кодировке
Автор: KapralBel
Дата сообщения: 19.05.2008 23:29
spstoyan
или
делай так

Код:
@Echo Off
chcp 1251
echo русские буквы
Автор: el mentiroso
Дата сообщения: 20.05.2008 06:43
Что-то да, проглядел косяки
Сам вчера порыскал по форуму, не нашел ничего по теме, надо было удалять файлы старше 7 дней от текущей даты.

Собственно, исправить косяк достаточно легко, всего лишь нужно перевести дату в число дней, например:

Код:
set /a c_date=%date:~6,4%*365+%date:~3,2%*30+%date:~0,2%
Автор: KapralBel
Дата сообщения: 20.05.2008 07:16
el mentiroso
1. Забыл что есть високосные года
2. проверь свой код на дате 2008-авг-09 - будешь в шоке
Автор: el mentiroso
Дата сообщения: 20.05.2008 08:01
Високосные года не забыл, а намеряно заигнорил. Впрочем как и реальное число дней в месяце.
Угумс, есть еще и такой подводный камень.

Надеюсь окончательный вариант:


Код:
@echo off
if "%1" == "" (
    @echo Пропущен обязательный параметр: папка с файлами
    set err=1
)
if "%2" == "" (
    @echo Пропущен обязательный параметр: маска файла
    set err=1
)
if "%3" == "" (
    @echo Пропущен обязательный параметр: число дней
    set err=1
)
if "%err%"=="1" (echo Пример использования: %~nx0 c:\temp\ ^*.tmp 7
        goto :eof)
set /a opt3=%3
if "%date:~3,1%"=="0" (
    set c_mm=%date:~4,1%
) else (
set c_mm=%date:~3,2%)

if "%date:~0,1%"=="0" (
    set c_dd=%date:~1,1%
) else (
set c_dd=%date:~0,2%)

set /a c_date=%date:~6,4%*365+%c_mm%*30+%c_dd%

For %%a In (%~dp1%2) Do @Call :killall %%a %%~ta
GoTo :EOF
:killall
set f_name=%1
set f_date=%2

if "%f_date:~3,1%"=="0" (
    set f_mm=%f_date:~4,1%
) else (
set f_mm=%f_date:~3,2%)

if "%f_date:~0,1%"=="0" (
    set f_dd=%f_date:~1,1%
) else (
set f_dd=%f_date:~0,2%)

set /a f_date=%f_date:~6,4%*365+%f_mm%*30+%f_dd%
set /a d_calc=%c_date%-%f_date%
if /i %d_calc% GEQ %opt3% del %f_name%
GoTo :EOF
Автор: z1riser
Дата сообщения: 20.05.2008 09:31
Вот такая задачка...
Есть текстовый файл, в нем лог с нумерацией строк

....
32    17:20:26    [service]:    Загрузка ...
33    17:20:26    [service]:    Доступные !CRC $FD084D1F6E2CB6CA
34    17:20:26    [service]:    Загрузка !CRC $FE803AEA6DC960A3
35    17:20:26    [service]:    Загрузка .... (всего 1).    !CRC $BFF09103C9665636
36    17:20:26    [kassa]:    2008-05-19:!CRC $E0CD8B5B555F4037
37    17:24:17    [server]:

Задача...
из последней строки файла, взять число (в данный момент 37) и запихнуть его в нужный мне раздел реестра(возможно придется перевести его в 16тиричку.. типа dword)...
Автор: Joolz
Дата сообщения: 20.05.2008 10:20
z1riser

Код: for /f "tokens=1,*" %i in ('tail.exe -n 1 log.txt') do REG ADD HKLM\Software\Program /v Data /t REG_DWORD /d %i
Автор: JohnRD
Дата сообщения: 20.05.2008 11:38
день добрый
подскажите пожалуйста, как можно удалить содержимое папки, не удаляя саму папку
папка в сети
спасибо
Автор: Joolz
Дата сообщения: 20.05.2008 11:55
JohnRD

Код: @echo off
pushd \\serv1\folder
del /q *.*
for /f "tokens=*" %%i in ('dir /B') do rd /s /q "%%i"
popd
Автор: z1riser
Дата сообщения: 20.05.2008 12:31
Joolz огромное спасибо...
Извиняюсь, что туплю, но перед закидкой в реестр переменную %i нужно увеличить на 1
как это сделать ?
Автор: KapralBel
Дата сообщения: 20.05.2008 12:53
z1riser
Set /a A=%a%+1
Автор: z1riser
Дата сообщения: 20.05.2008 12:59

Цитата:
Set /a A=%a%+1


ага вроде все просто, но че-то не работает...


Код:
for /f "tokens=1,*" %%i in ('c:\1\tail.exe -n 1 %windir%\system32\Log\Debug\server.log') do (
Set /a i=%i%+1
echo %i%
REG ADD HKLM\SOFTWARE\KPI\GameClub\Admin\window /v Cnt /t REG_DWORD /d %i% /f
)

rem server.exe

Автор: KapralBel
Дата сообщения: 20.05.2008 13:13
z1riser
Ошибка в том, что ты путаешь переменные окружения и переменные цикла


Код: for /f "tokens=1,*" %%i in ('c:\1\tail.exe -n 1 %windir%\system32\Log\Debug\server.log') do (
Set NewI=%%i
Set /a NewI=%NewI%+1
echo %NewI%
REG ADD HKLM\SOFTWARE\KPI\GameClub\Admin\window /v Cnt /t REG_DWORD /d %NewI% /f
)
Автор: z1riser
Дата сообщения: 20.05.2008 13:21
спасибо, но видимо где-то еще ошибки

Код:
for /f "tokens=1,*" %%i in ('c:\1\tail.exe -n 1 %windir%\system32\Log\Debug\server.log') do (
Set NewI=%%i
Set /a NewI=%NewI%+1
echo %NewI%
REG ADD HKLM\SOFTWARE\KPI\GameClub\Admin\window /v Cnt /t REG_DWORD /d %NewI% /f
)

вывод

C:\1>(
Set NewI=74
Set /a NewI=+1
echo
REG ADD HKLM\SOFTWARE\KPI\GameClub\Admin\window /v Cnt /t REG_DWORD /d /f
)
Режим вывода команд на экран (ECHO) включен.
Value Cnt exists, overwrite(Y/N)?
Автор: wolf0425
Дата сообщения: 20.05.2008 13:29
z1riser, а ты уверен, что на твоем компе есть файл %windir%\system32\Log\Debug\server.log
да ещё и с числом в последней строке?
Автор: king_stiven
Дата сообщения: 20.05.2008 13:39
JohnRD
Я делаю так, правда не в сети

Код: PushD путь
if not errorlevel 1 RD /s /q .
PopD
Автор: Joolz
Дата сообщения: 20.05.2008 14:03
z1riser
Присваивай нужное значение переменной один раз и не выходя из цикла.

Код: for /f "tokens=1,*" %%i in ('c:\1\tail.exe -n 1 %windir%\system32\Log\Debug\server.log') do Set /a NewI=%%i+1

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Сброс пароля администратора


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