Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] BAT считывающий по очереди строки

Ответить
Настройки темы
CMD/BAT - [решено] BAT считывающий по очереди строки

Новый участник


Сообщения: 10
Благодарности: 2

Профиль | Отправить PM | Цитировать


Нужен BAT который будет читать по очереди строки из файла 1.txt и записывать их в переменную %stroka%
Т.е. нужно примерно такое

Код: Выделить весь код
@echo off
:restart
Читаем из файла 1.txt первую строку и пишем её в переменную %stroka%
echo %stroka%
pause
goto restart
Погуглив понял что там нужен счетчик + чтение из файла
Собрал вот в такой код

Код: Выделить весь код
@echo off
setlocal
if not exist count.txt 1>count.txt echo 0
0<count.txt set /p "count="
set /a count+=1
1>count.txt echo %count%
type count.txt

@echo off
for /f "usebackq  delims=" %%i in (`find /n /v "" 1.txt ^| find "[%count%]"`) do (echo "%%i")
pause
Он работает, но выводит значения не так как нужно, выводит
PHP код: Выделить весь код

1

"[1]Текст первой строки" 

А нужно
PHP код: Выделить весь код

Текст первой строки 


Ума не приложу, как это исправить, надеюсь на вашу помощь

Отправлено: 11:20, 23-08-2017

 

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Меня терзают смутные сомнения, что в текстовом файле строки именно так и пронумерованы. Сиречь:
Код: Выделить весь код
[1]Текст первой строки
[2]Текст второй строки
...
[n]Текст n-ой строки
если это так, то претензии к самому файлу, если же в файле именно строки без подобной нумерации то можно например вот так:
Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "delims=" %%i in (1.txt) do (
set stroka=%%i
echo !stroka!
pause)
хотя зачем там пауза я не совсем понимаю, но если нужно...
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:55, 23-08-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Fometra:
Нужен BAT который будет читать по очереди строки из файла 1.txt и записывать их в переменную %stroka% »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

for /f "usebackq delims=" %%i in ("1.txt") do (
	set stroka=%%i
	echo !stroka!
)

endlocal
exit /b 0
Цитата Fometra:
Он работает, но выводит значения не так как нужно, »
Вы расскажите, что Вам нужно. Не описывайте, что как выводит, так или не так, как хотелось. Опишите Вашу задачу.

Цитата Elven:
Меня терзают смутные сомнения, что в текстовом файле строки именно так и пронумерованы. »
Это вывод команды «find.exe /n».


Update: не доглядел зараз, что коллега Elven уже сделал ровно то же . Прошу прощения за повтор.

Отправлено: 12:08, 23-08-2017 | #3


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


На всякий случай, если есть спецсимволы и добавлен учет пустой строки
Код: Выделить весь код
@echo off
<"1.txt" (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do @set "stroka=%%b"& cmd/v/c if defined stroka ^(echo !stroka!^) else echo:)
pause

Отправлено: 13:07, 23-08-2017 | #4


Новый участник


Сообщения: 10
Благодарности: 2

Профиль | Отправить PM | Цитировать


Вообще мне это нужно, чтобы по очереди подключаться к множеству RDP, сам код подключения я нашел
Код: Выделить весь код
cmdkey /generic:TERMSRV/168.195.218.29 /user:Administrator /pass:admin
mstsc.exe /v 168.195.218.29
Но под каждый сервер такую команду писать не выход, вот нужно, чтобы вместо IP, USER и PASS брались данные для входа из TXT-файлов (IP,LOGIN,PASS думаю разнести в 3 разных ТХТ, т.к. распарсивать строку вида 109.123.99.18:3389@SERVER\Administrator;Password для меня сложновато

Отправлено: 13:17, 23-08-2017 | #5


Новый участник


Сообщения: 10
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Elven:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "delims=" %%i in (1.txt) do (
set stroka=%%i
echo !stroka!
pause) »
Вот это почти то, что нужно, проблема в том, что пока батник не переберет все строки из файла 1.txt, дальше код БАНтика не читает

Отправлено: 13:42, 23-08-2017 | #6


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Цитата Iska:
Это вывод команды «find.exe /n». »
Это я как-то прошляпил. Спасибо.

Fometra, парсить строку приведенного вида действительно не очень удобно, хотя и не невозможно, но хранить пароль в открытом виде не очень красиво и совсем не есть секурно. Для такой задачи как подключение к многочисленным рабочим столам я бы рекомендовал использовать RDCMan или аналоги.

Если же все же использовать вариант с файлом где все хранится в открытом виде, проще будет разместить их в файле с каким-то одним разделителем, а не с разными. Например если разделить символом "_"

вариант файла
Код: Выделить весь код
109.123.99.18_Administrator_Password
192.168.1.2_user_parol

то код может быть приблизительно таким.
Код: Выделить весь код
for /F "delims=" %%i in (1.txt) do (
  for /F "tokens=1-3 delims=_" %%A in ("%%i") do (
    set IP=%%A
    set LOGIN=%%B
    set PASS=%%C
rem тот код, куда подставляются переменные !IP! !LOGIN! !PASS!
))
Однако еще раз повторюсь - это нифига не секурно.

Последний раз редактировалось Elven, 23-08-2017 в 14:36.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:27, 23-08-2017 | #7


Новый участник


Сообщения: 10
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата Elven:
»
Всё секурно))) Это то, что нужно, не говорите что я извращенец, была задача сделать именно так)))
Получился вот такой код:
Код: Выделить весь код
@echo off
for /F "delims=" %%i in (1.txt) do (
  for /F "tokens=1-3 delims=_" %%A in ("%%i") do (
    set IP=%%A
    set LOGIN=%%B
    set PASS=%%C
cmdkey /generic:TERMSRV/!IP! /user:!LOGIN! /pass:!PASS!
mstsc.exe /v !IP!
))
Логин и пароль берет верный, а вот подключается не к IP адресу, а просто к тексту !IP!
Что не так?

Отправлено: 15:14, 23-08-2017 | #8


Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить PM | Цитировать


Упс. Строчку пропустил.
Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "delims=" %%i in (1.txt) do (
  for /F "tokens=1-3 delims=_" %%A in ("%%i") do (
    set IP=%%A
    set LOGIN=%%B
    set PASS=%%C
cmdkey /generic:TERMSRV/!IP! /user:!LOGIN! /pass:!PASS!
mstsc.exe /v !IP!
))
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:31, 23-08-2017 | #9


Новый участник


Сообщения: 10
Благодарности: 2

Профиль | Отправить PM | Цитировать


Всё заработало, только добавил еще pause, чтобы при закрытии окна сервера автоматом не подключался другой, а подключался после нажатии любой кнопки
Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "delims=" %%i in (1.txt) do (
  for /F "tokens=1-3 delims=_" %%A in ("%%i") do (
    set IP=%%A
    set LOGIN=%%B
    set PASS=%%C
cmdkey /generic:TERMSRV/!IP! /user:!LOGIN! /pass:!PASS!
mstsc.exe /v !IP!
pause
))
Последнее, что хотелось бы реализовать:
1. Подключился к серверу
2. Сделал всё, что мне нужно на нём
3. Закрыл окно MSTSC.exe
4. IP LOGIN PASS записались в >> results.txt
5. И мой комментирий
>> results.txt

Пробовал вот так, но сам комментарий не записывается
Код: Выделить весь код
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /F "delims=" %%i in (1.txt) do (
  for /F "tokens=1-3 delims=_" %%A in ("%%i") do (
    set IP=%%A
    set LOGIN=%%B
    set PASS=%%C
	
cmdkey /generic:TERMSRV/!IP! /user:!LOGIN! /pass:!PASS!
mstsc.exe /v !IP!


@set /p text="COMMENT: "
echo !IP! !LOGIN! !PASS! %text%>> results.txt
pause
))

Последний раз редактировалось Fometra, 23-08-2017 в 16:32.


Отправлено: 16:21, 23-08-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] BAT считывающий по очереди строки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - запуск файлов bat по очереди infoman1@vk Скриптовые языки администрирования Windows 8 06-12-2020 14:06
CMD/BAT - Поиск строки по слову и добавление новой строки после найденой. Mikhael2011 Скриптовые языки администрирования Windows 17 16-03-2017 03:37
CMD/BAT - Поиск и замена строки в txt файлах по содержанию этой строки. sayyad Скриптовые языки администрирования Windows 1 06-12-2015 13:20
CMD/BAT - CMD/BAT разбор строки с символом перехода строки в конце. Alex1254 Скриптовые языки администрирования Windows 0 19-09-2013 19:24
WINS/Browse - Вылетают по очереди! zalg Сетевые технологии 3 20-02-2008 17:40




 
Переход