![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Как из for получить значение из одной строки смещаясь на 1 при каждом проходе |
|
CMD/BAT - Как из for получить значение из одной строки смещаясь на 1 при каждом проходе
|
Новый участник Сообщения: 12 |
Условия:
Имею 2 "рафинированных" файла со списками, в первом файле по имени name.txt в каждой строчке имеются строки с названиями, во втором файле имеются айди соответсвующие именам именам в первом файле, то есть айди из первой строки соответствует имени из первой строки, айди из 555 строки id.txt соответствует имени из 555 строки в id. Требуется: Получить в каждом проходе 2 соответствующие друг друг переменных из одной и той же строчки в двух разных файлах, при следующем проходе перезаписать их новыми переменными со следующей строки Код:
Проблема: Первый For получающий имя без всяких проблем каждый цикл переходит к новой строчке пока не достигнет конца файла, с каждым новым проходом я получаю нужно мне имя файла. Но второй цикл For, заключенный внутри первого, при выходе из цикла и возврате в предыдущий из которого уже выводится эхо, всегда дает мне айди из последней строки таким образом разным именам всегда присваивается 1 и тот же айди. Я пробовал перенести эхо внутрь второго цикла, но при этом получался противоположный эффект - я получал 1 и то же имя с разными айди. Я попробовал добавить skip=N и ввел простой счетчик прохода N=N+1 и пытаюсь его значение подставить в качестве значения пропускаемых строк, по логике я на самом деле должен получить такой результат как и до этого (это я уже сообразил после добавления, ведь даже если я начиная с другой строки, все равно цикл закончится последней :D ), но по странной причине ошибка в синтаксисе. Ну в общем не знаю, как заставить внутренний цикл читать одну заданную номерную строчку вместо всех и завершаться. Я где то видел что внутри IN указывали примерно вот таким способом ([1] [555]) номер нужной строчки, но как это совместить с именем файла и каков правильный синтаксис еще и с подстановкой переменной N? П.С. - Как я понял find и findstr в моем случае не получится использовать, так как изначально неизвестно что искать, кроме номера строчки. В общем очень нуждаюсь в помощи, залип с такой простой вещью, а документация что в винде что в нете слишком куцая чтобы найти решение. |
|
Отправлено: 14:57, 27-08-2011 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
Цитата Voodooman:
|
||
Отправлено: 20:53, 27-08-2011 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать Не, WSH не стоит, я с ним не знаком и тут мне уже принципиально надо заставить бат файл каким то хитрым способом прочить только одну строчку!)) Я не успокоюсь пока не заставлю его это сделать)))
Решил поискать внешние консольные утилиты для упрощения задачи и поставки их в комплекте вместе с готовым батником, наткнулся на эту утилиту для чтения, изменения и удаления параметров из ини файлов через батники http://www.horstmuc.de/wbat32.htm#inifile Сейчас попытаюсь еще найти более широкопрофильную утилиту, которая может читать заданную строчку в любую сторону, помню мне однажды попадалась такой монстр, который через командную строку умел делать все, найти бы его сейчас и не извращаться со встроенным ограниченным функционалом) Но все же нейтив метод предпочительней, я пока от мук избавляю себя этой прогой, но хочу все равно узнать как выйти из фора внутри фора после 1 прохода по заданной строчке и при этом не выходить из верхнего. Должен же быть способ. Кстати, я забыл, как мне из полученной строки взять и использовать в качестве переменной последние 44 символа без всяких делиметеров и токенов? какие там операторы нужно использовать? |
Отправлено: 21:33, 27-08-2011 | #12 |
Старожил Сообщения: 352
|
Профиль | Отправить PM | Цитировать Цитата Foreigner:
|
|
Отправлено: 21:46, 27-08-2011 | #13 |
Ветеран Сообщения: 1759
|
kiripanda, можно и так.
|
Отправлено: 22:04, 27-08-2011 | #14 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать А кто нибудь на мои вопросы здесь ответит?))
еще раз спрошу - как взять значение из указанной строчки и прервать лишь 1 фор после этого чтобы избежать парсинга отсальных строк? |
Отправлено: 22:25, 27-08-2011 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Voodooman:
«%systemroot%\system32\wscript.exe» наличествует? Цитата Voodooman:
Цитата Voodooman:
Цитата Voodooman:
|
||||
Отправлено: 23:01, 27-08-2011 | #16 |
Новый участник Сообщения: 12
|
Профиль | Отправить PM | Цитировать (флейм удален)
|
Последний раз редактировалось Petya V4sechkin, 29-08-2011 в 16:45. Причина: пункт 3.1 http://forum.oszone.net/rules.html Отправлено: 23:34, 27-08-2011 | #17 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Voodooman:
|
|
Отправлено: 01:29, 28-08-2011 | #18 |
Ветеран Сообщения: 1759
|
Voodooman,
Штатными средствами, без счетчиков и не зная содержимое строки, этого сделать нельзя. Для парсинга текста написано много утилит -- sed, awk, grep, gsar и т.д. |
Отправлено: 05:54, 28-08-2011 | #19 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Как получить значение параметра из реестра, добавить значение в текстовый файл etc.? | Dark Ange1 | Скриптовые языки администрирования Windows | 28 | 22-06-2022 14:37 | |
CMD/BAT - Как получить значение искомой подстроки в строке? | Loki3D | Скриптовые языки администрирования Windows | 11 | 24-02-2018 08:37 | |
Доступ - Как получить права на файл или реестр из командной строки и вернуть всё как было | hb860 | Microsoft Windows 7 | 9 | 25-02-2013 14:03 | |
Как определить кодировку строки передаваемой как значение параметра OLE-серверу Excel | RUVATA | AutoIt | 12 | 13-12-2010 23:22 | |
Как получить значение CPU и VM. Желательно на С++ | Lenycik | Программирование и базы данных | 3 | 16-05-2007 12:07 |
|