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

Компьютерный форум 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

 

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


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

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


Сам разобрался, всем спасибо за внимание)))
Код: Выделить весь код
echo !IP! !LOGIN! !PASS! !text! >> results.txt

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



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

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


Ветеран


Contributor


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

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


Fometra, ИМХО, Брать в качестве разделителя "_" не слишком хорошая идея. Могу ошибаться, но в логине это допустимый символ. А в пароле тем более, плюс "!" тоже, что может привести к неприятностям при работе батника.
Предлагаю взять разделителем пробел.
Для строки вида:
192.168.125.15 User Tra La La
Код: Выделить весь код
@Echo Off
Set "FileIn=Z:\Box_In\1.txt"
Set "FileLog=Z:\Box_Out\Results.txt"

FOR /F "usebackq tokens=1,2* delims= " %%A IN ("%FileIn%") DO Call :Connect "%%A" "%%B" "%%C"
GoTo :Eof

:Connect
	cmdkey /generic:TERMSRV/%~1 /user:%~2 /pass:%~3
	mstsc.exe /v %~1
	set /p text="COMMENT: "
	Echo %Date% %Time% %~1 %~2 %~3 %text%>>"%FileLog%" 
Pause
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

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

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


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


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

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


Да, об этом не подумал, в паролях есть !

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

mwz mwz вне форума

Аватара для mwz

Ушел из жизни


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

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


Цитата megaloman:
Предлагаю взять разделителем пробел. »
А пробел в паролях тоже можно использовать.
Как раз с неделю назад в другом месте кто-то успешно опробовал, хотя и не на ftp, пароль из восьми пробелов и в шутку поинтересовался, легко ли его сбрутфорсить, в т.ч. словарной атакой.

-------
Mikhail Zhilin


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


Ветеран


Contributor


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

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


Цитата mwz:
А пробел в паролях тоже можно использовать »
Да в этом варианте хоть сто порций пробелов .
Однако, надо следить, чтобы в конце пароля в строке не было лишних пробелов. Увы, пробелы в начале пароля будут проигнорированы. Для Вашего примера пароля из пробелов скрипт не сработает. В этом случае надо иное решение. Чтобы скрипт отработал, первым в пароле должен быть символ.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 23-08-2017 в 18:21.

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

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


Ветеран


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

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


если есть возможность самому редактировать txt, то можно и так сделать, удобно, но на любителя
Код: Выделить весь код
@echo off
:: Строки в "f.txt"
:: IP=192.168.125.15 User=user_1 Password=parol_1
:: IP=192.168.125.17 User=user_2 Password=parol_2
<f.txt (for /f "tokens=1,2*" %%a in ('more') do set "%%a"& set "%%b"& set "%%c"& call :#)
pause& exit

:#
 echo "%IP%" "%User%" "%Password%"
exit /b

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


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


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

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


В моих паролях нету пробелов, поэтому не беда.
Еще бы добавить, чтобы после чтения IP,LOGIN,PASS из файла 1.txt прочитанная строка удалялась

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


Ветеран


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

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


Цитата Fometra:
прочитанная строка удалялась »
а вот это лишнее
удалять проще весь файл, но пока он нужен в нем можно делать изменения да и вообще хранить в качестве шаблона

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


Ветеран


Contributor


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

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


Fometra,
Можно "съесть" в память весь файл (если он не слишком большой), удалить его, а затем из памяти брать прочитанные данные.
Код: Выделить весь код
@Echo Off
cls

Set "FileIn=Z:\Box_In\1.txt"
Set "FileLog=Z:\Box_Out\Results.txt"

Set /A N=0
FOR /F "usebackq tokens=1,2* delims= " %%A IN ("%FileIn%") DO Call :ToMemory "%%A" "%%B" "%%C" A B C	
Echo Del "%FileIn%"
FOR /L %%i IN (1,1,%N%) DO Call :Connect %%A%%i%%  %%B%%i%%  %%C%%i%%

GoTo :Eof

:ToMemory
	Set /A N+=1
	Set "%4%N%=%1"
	Set "%5%N%=%2"
	Set "%6%N%=%3"
GoTo :Eof

:Connect
 	cmdkey /generic:TERMSRV/%~1 /user:%~2 /pass:%~3
 	mstsc.exe /v %~1
	set /p text="COMMENT: "
 	Echo %Date% %Time% %~1 %~2 %~3 %text%>>"%FileLog%" 
Pause
GoTo :Eof
Для удаления уберите Echo перед Del "%FileIn%"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-08-2017 в 11:38.


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



Компьютерный форум 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




 
Переход