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

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

Автор: 01MDM
Дата сообщения: 11.07.2007 18:52
Как можно определить букву\буквы CD\DVD-привода и его\их готовность (вставлен диск или нет) в HOME Edition. В Pro легко определялось через wmic.
Какие есть еще способы?
Автор: wolf0425
Дата сообщения: 11.07.2007 21:55
igor_andreev

Цитата:
Вот чтоб такими вычислениями не заниматься
я для себя нарыл отличный адрес для wget:
http://www.netikus.net/show_ip.html
обычный текст, ни тегов html, ничего, кроме ip-шника
а может ты и что-то придумаешь, чтоб ip выкидывать сразу в консоль/переменную, а не в файл?
Автор: 0Vovan0
Дата сообщения: 11.07.2007 22:38
можно ли из батника прописать папку в path? Желательно так чтобы следующая запущенная программа уже могла обращаться к файлам в этой папке также как и к файлам в windows\system32 (т.е. без пути, только по имени файла)
Автор: ViSiToR
Дата сообщения: 11.07.2007 23:15
0Vovan0

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

См. в шапке я приводил пример - Работа с переменными и параметрами ком. строки -> Создание (запись) переменных окружения в реестр.
Автор: NIKZZZZ
Дата сообщения: 11.07.2007 23:27
wolf0425

Цитата:
что-то придумаешь, чтоб ip выкидывать сразу в консоль/переменную, а не в файл?


Код: for /f "skip=6 delims=" %%i in ('wget -s -O - http://www.netikus.net/show_ip.html') do set "ip=%%i"
echo IP= %ip%
Автор: Elroir
Дата сообщения: 12.07.2007 00:31
NIKZZZZ
Какая версия wget-a используется? У меня он пишет, что не знает опции -s.

Добавлено:
Кстати - я пользуюсь curl-ом. В данном случае с ним проще:
"curl http://www.netikus.net/show_ip.html", выдает IP в консоль.
Автор: Maza Faka
Дата сообщения: 12.07.2007 07:26
01MDM
В Home Edition есть утилита DISKPART.EXE? Если есть, то можно так:

Код:
@echo off
for /f "tokens=3" %%a in ('echo list volume ^| diskpart ^| find "ROM"') do (
echo Found CD\DVD Drive %%a:
dir %%a:>nul && Echo Drive %%a: READY
Echo.
)
Автор: NIKZZZZ
Дата сообщения: 12.07.2007 10:08
Elroir

Цитата:
Какая версия wget-a используется?

Wget 1.5.3.1
-s, --save-headers save the HTTP headers to file.
Вообще-то она в данном случае не нужна, поставил по привычке.

Код: for /f "delims=" %%i in ('wget -O - http://www.netikus.net/show_ip.html') do set "ip=%%i"
echo IP= %ip%
Автор: cluster
Дата сообщения: 12.07.2007 12:02
Ещё один вопросец:

set _Dest=DB\1C\Enterprise\ACCOUNT

как поменять значение переменной на

ACCOUNT\Enterprise\1C\DB

Т.е. зеркально перевернуть. Пути могут быть разной длинны.
Автор: Elroir
Дата сообщения: 12.07.2007 12:39
cluster
Видимо так:

Код:
@echo off
setlocal
set "_Dest=DB\1C\Enterprise\ACCOUNT"
call :next "%_Dest%"
echo %_result%
rem ...
rem your code here
rem ...
goto :EOF
:next
for /f "tokens=1* delims=\" %%a in ("%~1") do call :reverse "%%a" "%%b"
goto :EOF
:reverse
set "_result=%~1\%_result%"
if "%~2"=="" (
set "_result=%_result:~0,-1%"
goto :EOF
)
call :next "%~2"
Автор: igor_andreev
Дата сообщения: 12.07.2007 12:41
cluster

Код:
@echo off
setlocal

set _Dest=DB\1C\Enterprise\ACCOUNT

for /f "tokens=1-26 delims=\" %%a in ('echo %_Dest%') do (
set reversed=%%z/%%y/%%x/%%w/%%v/%%u/%%t/%%s/%%r/%%q/%%p^
/%%o/%%n/%%m/%%l/%%k/%%j/%%i/%%h/%%g/%%f/%%e/%%d/%%c/%%b/%%a)

:trim
if "%reversed:~0,1%" equ "/" (
set "reversed=%reversed:~1%"
goto :trim
)

echo %reversed%
Автор: cluster
Дата сообщения: 12.07.2007 13:58
Ребят, благодарю.
Elroir
Выдаёт инвертированную переменную+оригинал
igor_andreev
Как часы, только с задержкой.. некритично.
Автор: Elroir
Дата сообщения: 12.07.2007 14:07
cluster

Цитата:
Выдаёт инвертированную переменную+оригинал

Это как? В переменной _result должна быть инвертированная строчка и все.
P.S. Я проверял

Добавлено:
igor_andreev
Кстати, ты слэши тоже "зеркально перевернул"
Автор: igor_andreev
Дата сообщения: 12.07.2007 15:12
Elroir
Угу, не обратил внимания куда слеши смотрят. Батник с какого-то разбора url остался типа ftp:/host/dir/subdir
Автор: newhome
Дата сообщения: 12.07.2007 17:29
Здравствуйте.
Подскажите, пжста, как мне сделать чтобы в данных циклах вырезались последние 3 цифры из цикла №3 %%b . Важно (!), чтобы цифры вырезались в цикле, т.к. цикл обрабатывает файл, вырезает из него цифры и запихивает их в имя файла:
результ 1 цикла | результ 2 цикла | результ 3 цикла:
2220011.kvt 0555611 1
2220021.kvt 0555632 2
2224411.kvt 0555611 1
2225311.kvt 0555632 2
-------------------------------------------------------------------------------------------------
for /F "usebackq tokens=4 delims=,.kvtKVT " %%i in (`find ".KVT" C:\Astra\LOG\ac_%day%.log`) do (
for /F "usebackq skip=2 tokens=5 delims= " %%a in (`find "BLABLA: " C:\BAT\KVT\%%~i.KVT`) do (
for /F "usebackq tokens=3 delims=xyz " %%b in (`find "BLABLA2: " C:\BAT\KVT\%%~i.KVT`) do (
echo copy %%i %%a%%b
)
)
)
---------------------------------------------------------------------------------------------------
Никак не получается "вынуть" 0555 из результата 2 цикла не завершая цикл (если завершить цикл, то файлы 2 цикла не будут обработаны) Помогите пжста.
Автор: Elroir
Дата сообщения: 13.07.2007 00:05
newhome
Видимо так:

Код: setlocal enabledelayedexpansion
for /F "usebackq tokens=4 delims=,.kvtKVT " %%i in (`find ".KVT" C:\Astra\LOG\ac_%day%.log`) do (
for /F "usebackq skip=2 tokens=5 delims= " %%a in (`find "BLABLA: " C:\BAT\KVT\%%~i.KVT`) do (
for /F "usebackq tokens=3 delims=xyz " %%b in (`find "BLABLA2: " C:\BAT\KVT\%%~i.KVT`) do (
set "tmp=%%b"
set "tmp=!tmp:~-3!"
echo copy %%i %%a!tmp!
)
)
)
Автор: NIKZZZZ
Дата сообщения: 13.07.2007 02:00
Есть небольшая задачка. Есть такой сервис - Rapidshare.com. После загрузки файла он временно блокирует Ваш IP.
Как батником проверить, есть ли Ваш IP в этом списке?
Дело в том, что при простом смене IP легко нарваться на уже заблокированный.
Автор: 01MDM
Дата сообщения: 13.07.2007 06:19
Maza Faka

Цитата:
утилита DISKPART.EXE

Diskpart есть. Можно ли как-нибудь определить является cd-rom физическим или виртуальным?
Автор: j0yb1tyr
Дата сообщения: 13.07.2007 10:53
Доброго времени,
Существует простейшая задачка, хотелось бы чтобы подтлкнули на ее решение.
Алгоритм следущий:
------------------------------------------------------------------
найти файл с последними изменениями *.расширение1
скопировать в папку out
найти файл с посл. изменениями *.расширение2
скопировать в папку out
открываем ФТП
коннект к серверу
логин
пароль
открыть DIR1
отправить файл1
открыть DIR2
отправить файл2
закрыть соединение

----------------------------------------------
Вот так. Проблема, точне не знание решения;) в следующем. Это в коннекте к ftp серверу под учетной записью и поиск среди массива файлов с одинаковыми расширениями ( назания у всех разные) файлы с последней датой измений.
Заранее спасибо.
Автор: GreaseOD
Дата сообщения: 13.07.2007 10:59
Всем привет.
Помогите с переменными.
Если написать в cmd %OS% - то увидешь Название Операционной системы.
А мне нужно получить доменное имя компьютера!!!!!
Пишу echo %Domainname% - и ничего не получается
ПОМОГИТЕ ПОЖАЛУЙСТА!!!
Автор: KapralBel
Дата сообщения: 13.07.2007 11:03
GreaseOD
Set


Код: echo %ComputerName%.%UserDNSDomain%
Автор: GreaseOD
Дата сообщения: 13.07.2007 11:57

Цитата:
GreaseOD
Set


Код:echo %ComputerName%.%UserDNSDomain%


Добавлено:
j0yb1tyr
dir /o:-d *.txt /b>files.lst
Сбрасывает в файл все названия .txt файлов - 1-я строка - самый первый
Дальше разборка файлика-списка по FOR /F ...


Все намного проще!!!
echo %computername% - и все.
Я неправильно написал - мне нужно было узнать имя домена (echo %userdomain%)

Но все равно ОГРОМНОЕ СПАСИБО ЧТО ОТКЛИКНУЛИСЬ!! НЕЗАБУДУ
Автор: cluster
Дата сообщения: 13.07.2007 12:04
А как записать в файл кириллический текст в ANSI 1251?
Есть такой скрипт для теста

Код: :go
echo.
IF EXIST temp1251.vbs DEL temp1251.vbs
chcp 1251
@echo ТЕСТ >> temp1251.vbs
chcp 866

echo.
IF EXIST temp866.vbs DEL temp866.vbs
@echo ТЕСТ >> temp866.vbs

endlocal
pause
goto go
Автор: KapralBel
Дата сообщения: 13.07.2007 12:10
cluster
С ходу могу предложить такой вариант
Разделяешь батничек на 2
Для 866- пишешь в кодировке 866
Для 1251 в кодировке 1251
Автор: wolf0425
Дата сообщения: 13.07.2007 12:28
j0yb1tyr коннект к серверу - разбирайся с командами ftp и перенаправлением, не так давно в этой ветке аналогичный пример был.

поиск самого свежего тоже был неоднократно
for /f "delims=" %%a in ('dir /b /a-d /o-d *.ext') do set "file=%%~a" && goto :next
Автор: GreaseOD
Дата сообщения: 13.07.2007 12:52
Опишу свою проблему более подробно!!!
Есть комп в домене "ККК". Если зайти в комп под доменным пользователем и в cmd написать (echo %UserDomain%), то он выведет имя домена "ККК". А если в комп залогинется под локальным админом и открыть cmd и написать (echo %UserDomain%), то он выведет имя компьютера.
А мне нужно чтобы я логинелся под локальным админом и написал в cmd (echo %?????%), что-то чтобы вывело мне имя домена в которую входит компьютер, т.е "ККК"
Заранее спасибо!!!
Автор: KapralBel
Дата сообщения: 13.07.2007 12:58
GreaseOD
В общем так - эти переменные зависят от контекста
и если пользователь локальный - то домена у него нет

Надо брать значение с реестра
Автор: newhome
Дата сообщения: 13.07.2007 13:05
Elroir
Работает. Большое спасибо.
Подскажите, пжста, что означает ! в "!metka!". Это переменная - загоняется в массив?
+Подкажите, пжста, как внести изменения в файл с пом батника. (Например, заменить в 3 строчке 4 слово "word.001" на "word.002")
Автор: KapralBel
Дата сообщения: 13.07.2007 13:17
newhome
Set /? >Help_Set
и в самом конце все описано
Автор: wolf0425
Дата сообщения: 13.07.2007 13:18
KapralBel у пользователя - домена конечно может и не быть, а вот у компьютера - домен есть независимо от того каким пользователем и в какой домен залогинились в этой сессии.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566

Предыдущая тема: Автозагрузка терминальной сессии


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