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

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

Автор: Elroir
Дата сообщения: 08.04.2007 12:50
NIKZZZZ

Цитата:
echo "%1" "%2" "%3"

Ты бы хоть написал, что передается в качестве аргументов
Автор: NIKZZZZ
Дата сообщения: 08.04.2007 13:30
Elroir
Приношу извинения:
%1 - исходная строка
%2 - что менять
%3 - на что

Автор: Smitis
Дата сообщения: 08.04.2007 14:07
Возвращаясь к теме "гибридных" скриптов (напоминаю, это когда в одном файле находятся скрипты на более чем одном скриптовом языке).
Вот несколько примеров с использованием разных скриптовых языков. Все примеры "чистые", т.е. cmd-часть скрипта не выводит эхо команд и сообщений об ошибках.

1. Объединение CMD+JS. Пример HYBRID_CMD_JS.CMD:

Код:
@set @x=0 /*
@echo off
echo This is CMD-part of script
cscript /nologo /e:javascript "%~f0" %*
goto:eof
*/
WScript.Echo("This is JS-part of script")
Автор: netman
Дата сообщения: 08.04.2007 15:32
Вот накропал скриптик для перемепа уже подмепленных дисков для систем 2k-xp.
Смотрит если меп на сервер ,если есть перемепливает на другой на туже букву.
Мож кому пригодится как мне.
Предложения по тюнингу принимаются. Только плиз без сторонних языков.Задача такая.
Да если не сложно у кого мож под рукой подкиньте аналог на английской винде вот этого пути
c:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1\

Код:
@echo off
IF "%1" == "" GOTO :ERR
IF "%2" == "" GOTO :ERR
IF %OS%==Windows_NT set key=/persistent:yes
IF exist c:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1\null set bat=c:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1
IF exist d:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1\null set bat=d:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1
IF exist e:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1\null set bat=e:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1
IF %OS%==Windows_NT set bat=%windir%\system32
set newshare=%bat%\newshare.bat
set source=%bat%\list_share.txt
net use >%source%

set oldserver=%1
set newserver=%2

setlocal
echo ::%oldserver%>%newshare%
for %%a in (%newshare%) do set "size=%%~za"
set /a "size=size-4"
set /a "size2=size+3"
echo ::%size% >%newshare%


echo ::Переменные заданы %oldserver% %newserver% >> %newshare%

SetLocal enabledelayedexpansion
for /F "eol=T tokens=1,2,3 skip=6 delims= " %%a in (%source%) DO (
set status=%%a
set status1=!status!
set letter=%%b
set letter1=!letter!
set server=%%c
set server1=!server:~2,%size%!
echo ::"!letter!","%oldserver%","!server1:~0,%size%!","\\%newserver%\!server:~%size2%,10!">>%newshare%

IF /i "%oldserver%" EQU "!server1:~0,%size%!" echo net use !letter! /del /y >>%newshare%
IF /i "%oldserver%" EQU "!server1:~0,%size%!" echo net use !letter! "\\%newserver%\!server:~%size2%,100!" %key% >>%newshare%
)
endlocal

call %newshare%
IF %OS%==Windows_NT del %newshare%

@echo ***********************************************************
@echo * *
@echo * Программа завершила все операции!! *
@echo * Проверьте правильность переключения ресурсов с сервера: *
@echo * %oldserver% на новый сервер %newserver%
@echo * При появлении ошибок обратитесь к администраторам *
@echo * *
@echo ***********************************************************
pause
goto END

:ERR
@echo **********************************************************
@echo * *
@echo * Не передан параметр в программу!!! *
@echo * Парамеры запуска newmap [старый сервер] [новый сервер] *
@echo * Пример:newmap server1 server2 *
@echo * *
@echo **********************************************************
pause
:END

Автор: Elroir
Дата сообщения: 08.04.2007 16:30
netman

Цитата:
Да если не сложно у кого мож под рукой подкиньте аналог на английской винде вот этого пути c:\windows\ГЛАВНО~1\ПРОГРА~1\АВТОЗА~1\

Дай полный (длинный) путь, а то не понятно, что это за директория.

Добавлено:
Sorry, все равно не смогу помочь - не сообразил сразу, что речь идет о директории Windows 9X.

P.S. Ты уверен, что данный батник работает/будет работать в Win98?
Автор: netman
Дата сообщения: 08.04.2007 16:42
был бы формат вывода net use на 98 ...
Автор: Elroir
Дата сообщения: 08.04.2007 16:50
netman
Не понял ответа. Ты же написал, что
Цитата:
скриптик для перемепа уже подмепленных дисков для систем w98-xp

Автор: netman
Дата сообщения: 08.04.2007 22:35
Elroir
ну нет под рукой 98,просто думаю что вывод net use такой же.Вот и написал
завтра проверю.
Автор: Elroir
Дата сообщения: 08.04.2007 23:13
netman
Дело даже не в выводе net use, а в том, что командная строка Win98, IMHO, не поддерживает синтаксис команд, которые ты используешь (setlocal .., for /f ... и т.д.).
Автор: NIKZZZZ
Дата сообщения: 08.04.2007 23:21
Smitis

Цитата:
Возвращаясь к теме "гибридных" скриптов

Попробовал создать гибрит на VBS. Не получилось. CScript.exe не желает воспринимать .bat как .vbs. Может у кого-нибудь есть идеи?


Автор: euheny
Дата сообщения: 09.04.2007 04:43
Если из контексного меню выполнять команду , то %L - буква диска.
Откуда это ? Опять я что-то недосмотрел ? ( по идее %~d1 )
Может кто знает , можно ли в контексном меню создать вложения без длл ?
Автор: netman
Дата сообщения: 09.04.2007 07:04
Elroir

Цитата:
не поддерживает синтаксис команд, которые ты используешь

Вот это облом,тогда будет работать только на w2k-xp Ну ладно у меня GPO и так на них не аплаится Хотя обидно,может можно как-то проапгрейдить 98? Или проще уже на vbs перейти,да поставить wbscript????
Автор: Nagual
Дата сообщения: 09.04.2007 07:43
netman
98..... как давно это было
попробуй запихать в %path% 9x cmd.exe и, если надо wscript.exe и cscript.exe
может сработает

Добавлено:
ну, если это обломно можно попробовать \..cmd сценарий
Автор: Maza Faka
Дата сообщения: 09.04.2007 08:01
netman

Цитата:
как можно определить количество знаков в переменной с помощью bat


Elroir

Цитата:
@echo off

Код:
setlocal
set "test=abra kadabra 1234567890"
echo %test%>%temp%\sz.tmp
for %%a in (%temp%\sz.tmp) do set "size=%%~za"
del /q %temp%\sz.tmp 2>nul
set /a "size=size-2"
echo %size%

Автор: GORA2
Дата сообщения: 09.04.2007 08:50
NIKZZZZ
Спасибо за подсказку. Правда у Вас там была ошибочка (nircmdc cmdwait 100) , но идею я понял. Сделал так и все заработало:
Код: start /b nircmdc infobox "INFO" "Title"
set /a i=100
:_1
tasklist | find /i "nircmdc">nul || EXIT
set /a i-=1
nircmdc wait 100
if not %i%==0 goto _1
nircmdc killprocess nircmdc
EXIT
Автор: Elroir
Дата сообщения: 09.04.2007 09:20
NIKZZZZ

Цитата:
CScript.exe не желает воспринимать .bat как .vbs

Ему надо явно указать, какой "движок" использовать:

Код:
cscript //E:VBScript test.bat
Автор: NIKZZZZ
Дата сообщения: 09.04.2007 09:43
Maza Faka

Цитата:
Как я понял, нужно было вывести сумму символов в переменной? Но вышеуказанный код, просто отнимает 2 от размера файла "sz.tmp", а не показывает кол-во символов в переменной или я чего-то не понял?

Так ведь размер файла и есть длина переменной + 2 символа (CR,LF).

Добавлено:
Elroir

Цитата:
cscript //E:VBScript test.bat

Флэш то двойной! спасибо.
Автор: Maza Faka
Дата сообщения: 09.04.2007 11:11
Elroir

Цитата:
Ты не понял . Нужно было найти именно количество символов, а не их сумму. Я вывожу все, что содержится в переменной в файл. Каждый символ - это один байт. Плюс еще два байта - символ новой строки и символ возврата каретки (LF, CR). Соответственно, когда я получаю размер файла в байтах и отнимаю от этого размера 2, я получаю количество символов в переменной.


Всё понятно!
Только мне приходится отнимать 3, потому, что в конце строки почему-то ставится пробел...
Автор: snakeemail
Дата сообщения: 09.04.2007 12:04
Кто подскажет как сделать такую штуку

Юзер запускает батник - юзеру показывается сообщение с его ИП адресом.
Автор: KapralBel
Дата сообщения: 09.04.2007 12:12
snakeemail
IPConfig /?
Автор: NIKZZZZ
Дата сообщения: 09.04.2007 12:43
Maza Faka

Цитата:
Только мне приходится отнимать 3, потому, что в конце строки почему-то ставится пробел...

Это выводится пробел, стоящий перед > , он не нужен.
echo %test%[ПРОБЕЛ]>%temp%\sz.tmp
Автор: Elroir
Дата сообщения: 09.04.2007 12:55
NIKZZZZ

Цитата:
Это выводится пробел, стоящий перед >

В моем коде нет пробела. Где ты его нашел?
Автор: snakeemail
Дата сообщения: 09.04.2007 12:55
KapralBel

отличный ответ =) открыл америку
Автор: Smitis
Дата сообщения: 09.04.2007 13:06
NIKZZZZ

Цитата:
Попробовал создать гибрит на VBS. Не получилось.

Мне кажется, как раз с VBS гибрид не получится.
Автор: sD31337
Дата сообщения: 09.04.2007 13:22
Всем привет , у меня такой вопрос
Возможно ли с помощью батника отправить тхт документ на mail.ru ?
Автор: Elroir
Дата сообщения: 09.04.2007 13:25
snakeemail

Код:
@echo off
setlocal
for /f "tokens=2* delims=-:. " %%a in ('"ipconfig | find "IP""') do set ip=%%b
echo IP Address - %ip%
pause
Автор: uZver
Дата сообщения: 09.04.2007 13:28
sD31337
только батником не обойтись.
а батник + blat (http://blat.net/) можно
Автор: NIKZZZZ
Дата сообщения: 09.04.2007 13:33
Elroir

Цитата:
В моем коде нет пробела. Где ты его нашел?

А твой и не добавляет пробел. Это у Maza Faka такая проблема.

Автор: Levitant
Дата сообщения: 09.04.2007 13:38
Народ, помогите пожалукйста срочно!
Можно как нитбудь при помощи батника или как-нибудь сторонне в файле Opera.ini заменить строки:
HTTPS server=192.168.2.12:2456
FTP server=192.168.2.12:2456
Gopher server=192.168.2.12:2456
HTTP server=192.168.2.12:2456

надо где путь к прокси написать везде следующию строку
Один фаил менял бы все на:192.168.5.2:2456
Второй фаил менял бы все на 192.168.5.2:3333
Третий фаил менял бы все на 192.168.2.12 3333

ПРИЧЕМ это было бы легко сделать если знаешь с какой строки на какую менять, но дело в том, что вместо 192.168.2.12:2456 в этом месте может быть написано все, что угодно, а может быть и ничего не написано.
Можно как-нить сделать что бы баник вставлял опеределенную строку ПОСЛЕ:
HTTPS server=
FTP server=
Gopher server=

Или какими-нибудь старонними программами. Был бы ОЧЕНЬ благодарен если бы сказали как это можно сделать!!!
Автор: KapralBel
Дата сообщения: 09.04.2007 13:40
snakeemail
Какой вопрос такой и ответ
Если бы конкретнее обрисовал проблему - то и получил другой ответ

Добавлено:
sD31337
Любая программа отправляющая пиьмо с комм.стоки
например The Bat!


Добавлено:
Levitant
Команда FOR - получаешь значение слева и справа от = (разделитель =)
Левую часть анализируешь - если не * Server - пишем во временный файл левую и правую через =
Если левая часть один из перечисленных тобой - то заменяем правую на нужную и пишем во временный
затем заменяем оригинал временным

ЗЫ.Это так общая идея - сейчас нет времени писать точный код

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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