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

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

Автор: Tipulatoid
Дата сообщения: 18.04.2007 02:56
Maza Faka

Цитата:
Просто добавь параметр /S "для всех вложенных папок"

Не так все просто. Проблемы с переименованием папок 2-го 3-его и т.д. уровня вложенности.

Mamontoza

Цитата:
тогда вопрос еще мне нужно чтоб нумерация шла вот так
comp-01
comp-02
comp-03...09
comp-10

Дык она так и идет в коде, предложенном Maza Faka Или тебе обязателен лидирующий нуль?

Цитата:
И еще что в логе писался номер компа
comp-01
как отработал
comp-02
как отработал

Поставь команду
Код: echo comp-%%a>>MyLog.txt
Автор: Kac
Дата сообщения: 18.04.2007 05:50
Люди где то когда то видел решиние но сейчас в течении полутора часов найти не могу...
Подскажите как разобрать Строку заданую в SET? Например %Path%.
Что то типа... Ток у меня не работает...

setlocal enableextension
for /f "delims=;" %%i in ('%path%') do (echo %%i)
endlocal
Автор: Maza Faka
Дата сообщения: 18.04.2007 06:53
Kac

Цитата:
Подскажите как разобрать Строку заданую в SET? Например %Path%.


Код:
@Echo off
for /f "delims=; tokens=1-4" %%a in ('PATH') do echo %%a %%b...
Автор: Kac
Дата сообщения: 18.04.2007 07:28
) Хегеее...
Нееетт
Видел универсальный скрипт... такой же простой (все гениальное...)
Я ж не знаю скоко параметров в Path прописано....
Нужно их вывести ВСЕ!!
Path1
Path2
Path3
...
PathN
Автор: Maza Faka
Дата сообщения: 18.04.2007 07:59
Tipulatoid
Gabzya

Цитата:
неподскажите как заменить укр буквы в именах файлов\папок "ї" и "і" на др символы, или вовсе их удалить?

Вот решение, правдо кривое , кривость заключается в том, что по истечении определённого времени, выполнение батника придётся прервать вручную, но главное, что он работает!

Код:
@echo off
:renDir
Chcp 1251
setlocal enabledelayedexpansion
For /F %%a in ('dir /b /a:d /s') do (
set name=%%a
set name=!name:i=и!
set name=!name:ї=йы!
move "%%a" "!name!"
)
Goto :rendir
Автор: Nagual
Дата сообщения: 18.04.2007 08:48
Kac
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

а находится это чудо в for /?
Автор: Mamontoza
Дата сообщения: 18.04.2007 08:54
Tipulatoid
Да мне нужно что был лидирующий ноль начиная 01 и заканчивая 09
Автор: Maza Faka
Дата сообщения: 18.04.2007 09:07
Elroir

Цитата:
Последний раз, когда происходит запуск "Call :Factorial %Param%", - %1=2 (то есть перед этим был запуск "Call :Factorial 2"), высчитывается новое значение Param=%1-1(2-1)=1 и последний раз запускается "Call :Factorial 1"


Но ведь здесь:
Код:
Call :Factorial %Param%
Set /a Result=%Result% * %1
Автор: slayer120
Дата сообщения: 18.04.2007 09:29
igor_andreev

Цитата:
есть eventquery.vbs

Не понравился - сортировать нельзя по датам, вывод не
отсортирован по времени. Выбрал wininternal овский psloglist
- гораздо лучше, можно записи сортировать, можно в файле задавать список
компов и другие прелести.
Осталось создать батник.
Автор: Tipulatoid
Дата сообщения: 18.04.2007 09:51
Mamontoza
Тогда так:

Код: @echo off
setlocal enabledelayedexpansion
set comps=10
for /l %%a in (1,1,%comps%) do (
if %%a leq 9 (set comp_num=0%%a) else (set comp_num=%%a)
echo comp-!comp_num!>>MyLog.txt
taskkill /s comp-!comp_num! /u domain\user name /p pass /f /im program.exe>>MyLog.txt 2>&1
sleep 15
)
Автор: Maza Faka
Дата сообщения: 18.04.2007 10:22
Tipulatoid
Gabzya

Код:
@echo off
:renDir
Chcp 1251
setlocal enabledelayedexpansion
For /F %%a in ('dir /b /a:d /s') do (
set name=%%a
set name=!name:i=и!
set name=!name:ї=йы!
move "%%a" "!name!" | Find "Перемещено" && Goto renDir
)
Автор: Tipulatoid
Дата сообщения: 18.04.2007 11:00
Maza Faka
Да, спасибо. Я думал прикрутить счетчик, но твой вариант лучше.
Gabzya
Вот полное решение твоей задачи (с помощью Maza Faka):

Код: @echo off
setlocal enabledelayedexpansion

set first_symb=i
set second_symb=ї
set third_symb=I
set forth_symb=Ї

:rendir
for /f "tokens=*" %%a in ('dir /b /a:d /s') do (
set dirname=%%a
set dirname=!dirname:%first_symb%=и!
set dirname=!dirname:%second_symb%=йы!
set dirname=!dirname:%third_symb%=И!
set dirname=!dirname:%forth_symb%=ЙЫ!
move "%%a" "!dirname!" 2>nul | find "Перемещено" && goto rendir
)

:renfiles
for /f "tokens=*" %%a in ('dir /b /a:-d /s') do (
set filename=%%~nxa
set filename=!filename:%first_symb%=и!
set filename=!filename:%second_symb%=йы!
set filename=!filename:%third_symb%=И!
set filename=!filename:%forth_symb%=ЙЫ!
ren "%%a" "!filename!"
)
Автор: Mamontoza
Дата сообщения: 18.04.2007 11:39
Tipulatoid
Maza Faka
Спасибо большое все отлично работает
Автор: Elroir
Дата сообщения: 18.04.2007 12:01
Kac

Цитата:
Подскажите как разобрать Строку заданую в SET? Например %Path%.

Например так:

Код:
@echo off
call :show "%path%"
goto :EOF
:show
for /f "tokens=1* delims=;" %%a in (%1) do (
echo %%a
if not "%%b"=="" call :show "%%b"
)
Автор: Kac
Дата сообщения: 18.04.2007 12:37
2

Nagual

Junior Member Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
--------------------------------------------------------------------------------
Kac
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i

а находится это чудо в for /?


Хм... ну не даун перед тем как в инете искать ман посотрел...
а терь примени туже ерунду для Path...
И ответь что получиться...
Автор: Maza Faka
Дата сообщения: 18.04.2007 13:22
Kac

Цитата:
Хм... ну не даун

Уважаемый! Ну ошибся человек, не так понял вопрос, оскорблять-то зачем? Тем более, что двумя постами выше, тебе дали правильный ответ на твой вопрос!

P.S. Впредь, будь добр, формулируй вопросы правильно.
Автор: Kac
Дата сообщения: 18.04.2007 15:37
2 Maza Faka
Не в коем случае! Тем более человека предложившего вариант ОСКОРБЛЯТЬ НЕ ХОТЕЛ! НЕ СОБИРАЛСЯ! И Я НЕ ДЕЛАЛ ЭТОГО! Видимо поняли меня не правильно! Говорил что я НЕ ТУПОЙ ЮЗВЕРЬ! и прежде чем обращаться СЮДА!!! явно не раз почитал МАНуал
Простите ВСЕ кто увидел в моих словах обидное в свой адрес!
Не в коем случае....

Пример который я ищу выглядел так
set Servers=S21,S2,S3,...Sn
for для каждого сервера из%Servers% сделать пинг
...
Все..
Автор: Tipulatoid
Дата сообщения: 18.04.2007 16:17
Kac
Сформулируй уже задачу толково Тебе список серверов известен? Если да, то проблем нет - приведи его. Если неизвестен - то откуда ты его взять собираешься?
И еще совет. Вверху этой страницы нажми "Версия для печати" Загрузится весь топик целиком. Далее Ctrl+F забиваешь ping и ищешь
Автор: KapralBel
Дата сообщения: 18.04.2007 16:28
Kac
Каким образом формируется
Цитата:
set Servers=S21,S2,S3,...Sn

Если построчно - то обработка будет легче
Автор: AlessTO
Дата сообщения: 18.04.2007 16:49
Подскажите, плиз, сценарий на vbs - запуск сервиса (службы) - в скрытом режиме..
Автор: Elroir
Дата сообщения: 18.04.2007 16:50
Kac
Я же привел код, который разбирает строку в переменной!
Если разделителем у тебя является запятая, а не точка с запятой как в Path, тогда в коде надо заменить "delims=;" на "delims=,".
Автор: Maza Faka
Дата сообщения: 18.04.2007 17:07
Kac
Извини, я неправильно тебя понял.
Насчёт примера, который ты ищешь, что-то я не могу его найти...Лучше опиши подробно задачу.
Автор: AlessTO
Дата сообщения: 18.04.2007 19:09
А ларчик просто открывался..

Код: Dim objWshShell

Set objWshShell = CreateObject("WScript.Shell")

objWshShell.Run "net start nameService", 0, false
Автор: InSe0F
Дата сообщения: 19.04.2007 06:29
Maza Faka, не не проходит. видно процесс не считается виндой зависшим.
Автор: Maza Faka
Дата сообщения: 19.04.2007 06:55
Elroir
Насчёт факториала, спасибо за обьяснение, разобрался, как я понял, в последний раз :Factorial вызывается с параметром %1=1, но из-за того, что функция не доходит до конца, а прерывается по условию, значением %1 остаётся прошлый удачный вызов %1=2, вот только почему все вызовы функции сохраняются и подсчитываются, происходит что-то вроде счётчика?
Автор: Kac
Дата сообщения: 19.04.2007 08:48
весело...
В общем так...
Надо вывести на экран числа вот так...
1
2
3
4
5
6
...
их я в команднике задаю так...
set SRV=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
далее пытаюсь вывести на экран...
FOR /F "usebackq delims=," %%i IN (%SRV%) DO (@echo %%i)
Говорит ошибка.. файл 1 не найден...
Кроме ДНК в чем ошибка?
Спасибо
Автор: KapralBel
Дата сообщения: 19.04.2007 09:31
Kac
1. Т.к. ФОР разбирает построчно - то тебе надо будет прописать
FOR /F "tokens=1-16 delims=," %%a in (...) Do Echo %%a %%b %%c...
2. FOR /F - разбирает файл
Делай файл Server
1
2
3
4
5
6

Тогда легче будет и управлять и править
Автор: Tipulatoid
Дата сообщения: 19.04.2007 10:09
Kac

Цитата:
В общем так..

Если я правильно понял твою задачу, то максимальное конечное число - каждый раз меняется. Тогда так:

Код: @echo off
setlocal enabledelayedexpansion

echo Введите максимальное число . . .
set /p input=

for /l %%a in (1,1,%input%) do (
echo %%a
set srv=!srv!,%%a
)

set srv=%srv:~1%
echo %srv%
Автор: Maza Faka
Дата сообщения: 19.04.2007 10:52
Kac

Цитата:
Надо вывести на экран числа вот так...
1
2
3
4
5
6

Elroir ведь написал тебе решение:

Код:
@echo off
Set SRV=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16
call :show "%SRV%"
:show
for /f "tokens=1* delims=," %%a in (%1) do (
echo %%a
if not "%%b"=="" call :show "%%b"
)
Автор: Elroir
Дата сообщения: 19.04.2007 13:11
Maza Faka

Цитата:
разобрался, как я понял, в последний раз :Factorial вызывается с параметром %1=1, но из-за того, что функция не доходит до конца, а прерывается по условию, значением %1 остаётся прошлый удачный вызов %1=2, вот только почему все вызовы функции сохраняются и подсчитываются, происходит что-то вроде счётчика?

Неправильно понял
Скачай картинку и проследи за стрелками.

1.Вызывается виртуальный батник :Factorial, с аргументом 5 (назовем его Fact5). Переменная Result не существует.
2.Вызывается виртуальный батник :Factorial, с аргументом 4 (назовем его Fact4). Переменная Result не существует.
3.Вызывается виртуальный батник :Factorial, с аргументом 3 (назовем его Fact3). Переменная Result не существует.
4.Вызывается виртуальный батник :Factorial, с аргументом 2 (назовем его Fact2). Переменная Result не существует.
5.Вызывается виртуальный батник :Factorial, с аргументом 1 (назовем его Fact1). Переменная Result не существует.
6.Fact1 отработал – переменная Result равна 1. Возвращаемся в Fact2.
7.Fact2 отработал - переменная Result равна 2*1=2. Возвращаемся в Fact3.
8.Fact3 отработал - переменная Result равна 3*2=6. Возвращаемся в Fact4.
9.Fact4 отработал - переменная Result равна 4*6=24. Возвращаемся в Fact5.
10.Fact5 отработал - переменная Result равна 5*24=120. Возвращаемся в Fact.cmd.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Сбой активации XP sp2


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