Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)

Модерирует : gyra, Maz

Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

   

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Командная строка, батники\сценарии (bat, cmd)
Вопросы, задачи и их решения по работе с командной строкой, файлами, а также сопутствующие ссылки.

 
Важно: копируя батник через буфер обмена из форума не забывайте удалять пробелы в конце каждой строки, т.к. в некоторых случаях из-за этого программа будет работать неправильно!!!
 
Примечание: Большие куски кода заключайте в тэг [more]  
 
Смежные темы:
В помощь системному администратору » Автоматизация администрирования
Microsoft Windows » Задачи на bat-файлах 4
 
Полезные ссылки:
· Cmd. Описание от разработчиков
· Урок bat-аники (для начинающих)
· Набор GNU утилит для win32
· Пакет утилит для организации интерфейса в bat-файлах
· Использование ansi.sys
· cmdow — изменение параметров и видимости дос-окна
· blat — отправка почты из консоли
· Справка по командам в виде Html
· Команды RunDll32
· Quick Batch File Compiler - Позволяет превратить ваш батник в независимое приложение
· Пример - получение и обработка списка пользователей
 
 
Старая версия первого сообщения

Всего записей: 11450 | Зарегистр. 12-10-2001 | Отправлено: 04:28 24-09-2002 | Исправлено: Elroir, 19:35 11-09-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Yuki2003
Вообще, что ты хочешь сделать

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:46 27-07-2007
Yuki2003



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
В List.txt список путей.
Хочу в цикле (перебор строк) получать 2 переменных - сам путь (то есть просто строку целиком) и имя последнего в этом пути каталога и делать бэкап:
1-я переменная - что бэкапить,
2-я - имя архива.
И то и другое - не проблема, работает, но... не в цикле, а всего 1 раз.
Цикл прерывается.
Пример "облегчен", в нем только 2-я переменная "вычисляется".

Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 14:54 27-07-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
это чего такое  
 
Присвоение "правого остатка" от %%d в переменную test  

Хм. Мои глаза указывают что это присвоение переменной test значение некоторой переменной %%e но не %%d
А следующим идет проверка на не пустое значение test. Так как условие не выполняется, то %count% = 1  

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 15:09 27-07-2007
Yuki2003



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd

Цитата:
%%e но не %%d

%%e - автоматически создается, это работает

Цитата:
условие не выполняется, то %count% = 1

условие выполняется, сделайте echo - count в цикле (GoTo again) будет равен от 1 до кол-ва разделенных слэшами слов в строке файла List.txt
 
Добавлено:
vserd
Не работает другой цикл, перебор строк в файле List.txt ограничивается первой строкой.

Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 15:24 27-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Yuki2003
Ты приведи не облегченный вариант а полный и лист.тхт

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 16:16 27-07-2007
Yuki2003



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
List.txt:

Цитата:
C:\Files\Mail\*
\\SERVER\Folder\*
\\SERVER\Another Folder\*

Test.bat:

Код:
@Echo Off
setlocal ENABLEDELAYEDEXPANSION
For /f "eol=; delims=" %%c In ( List.txt ) Do (                         ; читаем строки из List.txt
Set test=%%c
Set test1=%%c
Set count=0
:again
For /f "delims=\* tokens=1*" %%d In ("!test!") Do (                ; вычисляем "глубину" папки (в примере у всех - 2)
Set /a count=!count!+1
Echo %count%
Set test=%%e
)
If Not "!test!"=="" GoTo again
For /f "delims=\ tokens=%count%" %%f In ("%test1%") Do Set test1=%%f    ; обрезаем до имени последней в пути папки
Echo !test1!
)

Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 17:00 27-07-2007 | Исправлено: Yuki2003, 17:14 27-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Yuki2003

Код:
@Echo Off
setlocal ENABLEDELAYEDEXPANSION
For /f "eol=; delims=/" %%c In ( List.txt ) Do (
Set test=%%c
Set test1=%%c
Set count=0
:again
For /f "delims=/* tokens=1*" %%d In ("!test!") Do (
Set /a count=!count!+1
Echo %count%
Set test=%%e
)
If Not "!test!"=="" GoTo again
For /f "delims=/ tokens=%count%" %%f In ("%test1%") Do Set test1=%%f
Echo !test1!
)

 
Так?
или я не правильно понял задачу?
 
Если не так - то  по каждой строке объясни что ты хочешь получить?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:06 27-07-2007 | Исправлено: KapralBel, 17:08 27-07-2007
Yuki2003



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
Замена обратных слэшей на прямые?? Гм, внешний цикл заработал, внутренний перестал...

Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 17:10 27-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Yuki2003
Ладно, пойдем другим путем
 
Вот 3 строки
C:\Files\Mail\*
\\SERVER\Folder\*
\\SERVER\Another Folder\*
 
Что из каждой надо получить?

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 17:13 27-07-2007
Yuki2003



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
C:\Files\Mail\*  
\\SERVER\Folder\*  
\\SERVER\Another Folder\*

Mail
Folder
Another Folder
 
независимо от кол-ва слэшей!
 
Добавлено:
Вобщем с delims в примере все нормально. В чем-то другом прикол.

Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 17:15 27-07-2007 | Исправлено: Yuki2003, 17:16 27-07-2007
vserd

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yuki2003

Код:
 
@Echo Off
setlocal ENABLEDELAYEDEXPANSION
For /f "delims=" %%c In ( List.txt ) Do (
::Set test=%%c
Set test1=%%c
Set count=0
Call :GetCount "%%c"
Echo test1=!test1!
)
 
Goto :eof
 
:getCount
Set test=%~1
 
:again
For /f "delims=\* tokens=1*" %%d In ("!test!") Do (
Set /a count=!count!+1
Set test=%%e
)
If Not "!test!"=="" GoTo again
 
For /f "delims=\ tokens=%count%" %%f In ("%test1%") Do Set test1=%%f
 
goto :eof
 

результат
test1=Mail
test1=Folder
test1=Another Folder
 
 
Добавлено:
В чем прикол не понял, если внутри цикла вызывать, срабатывает один раз, если через процедуру, то как нужно, но мое мнение что в скобках....

Всего записей: 2065 | Зарегистр. 08-05-2002 | Отправлено: 18:34 27-07-2007
Yuki2003



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vserd
10x!

Всего записей: 1077 | Зарегистр. 10-07-2003 | Отправлено: 19:11 27-07-2007
Maza Faka



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Yuki2003
Ещё один вариант:

Код:
 
@echo off
setlocal enabledelayedexpansion
set count=2
 
:begin
for /f "skip=%count% delims=" %%a in ('find /v "" list.txt') do (
set str=%%a
 
:subrout
for /f "tokens=1* delims=\*" %%b in ("!str!") do (
set str=%%c
if defined str (
 goto :subrout) else (
  echo %%b>> out.txt
   set /a count+=1
    goto :begin
)
 )
  )
 

Всего записей: 1420 | Зарегистр. 25-10-2006 | Отправлено: 07:42 28-07-2007
utka00



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Можно ли заставить разные копии одной программы работать по разным интернет подключениям?

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 10:54 28-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
utka00
1. Не та тема
2. Скорее всего невозможно
3. Надо смотреть конкретную программу

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:07 28-07-2007
utka00



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
я подумал что какнибудь спомощью команы route можно и по заголовку окна, а так то я еще в другом месте тему создал)

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 11:18 28-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
utka00
А ты пробовал ручками?
 
Если получится - то тогда мы поможем автоматизировать процес

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 11:22 28-07-2007
utka00



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KapralBel
всмысле как? Я несилен в командах поэтому и спрашиваю тут

Всего записей: 95 | Зарегистр. 01-05-2007 | Отправлено: 11:32 28-07-2007
KapralBel



Platinum Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
utka00
В смысле если тебе каким либо образом руками это получится сделать, то мы поможем это автоматизировать (т.е. написать батник по распределению интернет-соединений между приложениями)
Но  
1. стандартными способами это не сделаешь
2. Может быть в настройках конкретной программы и есть выбор

Всего записей: 11354 | Зарегистр. 16-02-2005 | Отправлено: 14:07 28-07-2007
Stanley_Tweedle



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите решить задачу!
Есть html файл вида(ну естественно все упрощено)
file.html

Код:
 
<html>
<head>
<title>название</title>
</head>
<table>
<tr>
<td>Текущий баланс:</td>
<td width="100"><b>89.3668 руб</b></td>
</tr>
</table>
<html>
 

Необходимо как-то выделить значение баланса 89.3668 и сохранить его в файл balans.txt
Бьюсь над этим уже второй день...

Всего записей: 4 | Зарегистр. 29-07-2007 | Отправлено: 16:05 29-07-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118

Компьютерный форум Ru.Board » Компьютеры » Программы » Командная строка, батники, сценарии (bat, cmd)
Widok (19-11-2007 12:08): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru