Войти

Показать полную графическую версию : [решено] присвоить строчке из .txt переменную


zion87
07-01-2012, 02:41
Привет великим и всезнающим!!!! :)
Вообщем такое дело, есть N-ное количество папок в каталоге d:\temp, в каждой такой папке есть файл readme.txt

все readme.txt с разным содержанием но строчки у всех расположены так

123
username - vkontakte.ru

http://www.prsrdksdjf.ru
http://www.vk.ru/bsadjbsd
Файл загружен: 06.01.2012


вот в этом файле 5 строчка меня и интересует собственно, нужно запустить браузер(например chrom) c 5 строчкой из каждого файла

chrome.exe (из 1го readme.txt) - http://www.vk.ru/bsadjbsd (из 2го readme.txt) - http://www.odn.ru/bsadjbsd

и так далее использую все 5-тые строчки из файлов readme.txt лежащих во всех папках каталога d:\temp\

Foreigner
07-01-2012, 10:01
zion87,

@echo off

for /f "tokens=*" %%i in (' dir /b /s /a-d d:\temp\readme.txt ') do call:1 "%%i"
goto:eof

:1

:: хрома нет

for /f %%i in (' more +4 %1 ') do start "" "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" %%i && goto:eof

zion87
07-01-2012, 17:37
все всем спасибо вроде сам разобрался

@echo off
for /f "tokens=*" %%i in (' dir /b /s /a-d D:\temp\readme.txt ') do (
call:1 "%%i"
)
start/wait temp.txt
del temp.txt
goto:eof
:1
for /f %%i in (' more +0 %1 ') do echo %%i>>temp.txt && (
for /f %%i in (' more +1 %1 ') do echo %%i>>temp.txt && (
for /f %%i in (' more +5 %1 ') do echo %%i>>temp.txt && goto:eof
)
)

zion87
07-01-2012, 18:12
опять вопрос нарисовался можно как то решить проблему с пробелами
если выполнить команду

for /f %%i in (' more +1 %1 ') do echo %%i>>temp.txt

то строка которая выглядит на самом деле так

net user

запишется в блокноте только до пробела тобеж только net, а как ее полностью вывести???

Anonymоus
07-01-2012, 18:27
По умолчанию for считает разделителем пробел или символ табуляции. Поэтому, чтобы получить всю строку, нужно или сменить символ разделителя по умолчанию, или, что будет проще - сделать вот так:
For /F "tokens=*" %%I In ('More +1 %1') Do (Echo %%I>>temp.txt)

zion87
07-01-2012, 19:15
а то есть можно сделать во так

for /f "delims=*" %%i in (' more +1 %1 ') do echo %%i>>temp.txt

megaloman
07-01-2012, 19:53
Вот вариант без Dir и More, Echo Off
cls
Set Where=d:\temp

FOR /R "%Where%" %%f IN (readme.txt) DO Call :Inet "%%f"
GoTo :Eof

:Inet
FOR /F "usebackq skip=4 delims=" %%s IN (%1) DO (
Echo %%s
GoTo :Eof
)
Вместо
Echo %%s
НапишИте любую команду, которая Вам необходима, с 5 строкой из readme.txt, которая содержится в переменной %%s.

zion87
08-01-2012, 11:33
FOR /F "usebackq tokens=5 delims== " %%s IN (htmp.txt) DO chrom.exe - %%s

megaloman, строчка не проходит - вот ее результат

Непредвиденное появление: %%s.

да и там 2 равно:
type="text" value="http://...."

megaloman
08-01-2012, 13:39
Мне удалось повторить это сообщение только в том случае, если запускать строку в командном окне (в этом случае вместо %%s надо везде использовать %s и проблема разрешится). Я предполагал, что строка используется в батнике - отсюда и %%s
С Вашим примером из поста файла htmp.txt у меня работает, и из батника с %%s и из командного окна с %s. Высылаю свой батник т файл htmp.txt. Пришлите Ваш htmp.txt

zion87
08-01-2012, 15:34
вот блин и на самом деле работает! :)))))))))))))))))
СПАСИБО ОГРОМНОЕ megaloman!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

zion87
08-01-2012, 15:56
а как сделать так?
из этого

<p>Последнее скачивание: 08.01.2012 13:45</p>
<p><input type="text" value="http://wf5.ru/re/joZAe2zBFDP/Rzs8AvI7t" readonly="readonly" onclick="this.select();" style="width:240px" /></p>
<p>Последнее скачивание: 07.01.2012 19:15</p>
<p><input type="text" value="http://wf5.ru/re/W6g2rRZDuPBh/ZPP6STs" readonly="readonly" onclick="this.select();" style="width:240px" /></p>

дальше могут быть такие же строки

сделать это в блокноте

Последнее скачивание: 08.01.2012 13:45
"http://wf5.ru/re/joZAe2zBFDPEp/Rzs8AvI7t"
-----------------------------------------------------------
Последнее скачивание: 07.01.2012 19:15
"http://wf5.ru/re/joZAe2zBFDPEp/Rzs8AvI7t"
-----------------------------------------------------------

дальше могут быть такие же строки

я предполагаю что как то так используя код megaloman,


@Echo off
FOR /F "usebackq tokens=* delims= " %%z IN (temp.txt) DO echo %%z>>1.txt && (
FOR /F "usebackq tokens=5 delims== " %%z IN (temp.txt) DO echo %%z>>1.txt && (
echo -------------------->>1.txt
)
)


но выводится вот так

<p>Последнее скачивание: 08.01.2012 13:45</p>
"http://wf5.ru/re/joZAe2zBFDPE/Rzs8AvI7t"
-----------------------------------------------------------
"http://wf5.ru/re/W6g2rRZDuPB/ZPP6STs"
--------------------
<p><input type="text" value="http://wf5.ru/re/joZAe2zBFDPE/Rzs8AvI7t" readonly="readonly" onclick="this.select();" style="width:240px" /></p>
"http://wf5.ru/re/joZAe2zBFDPE/Rzs8AvI7t"
--------------------
"http://wf5.ru/re/W6g2rRZDuPBh1/ZPP6STs"
--------------------
<p>Последнее скачивание: 07.01.2012 19:15</p>
"http://wf5.ru/re/joZAe2zBFDP/Rzs8AvI7t"
--------------------
"http://wf5.ru/re/W6g2rRZDuIlj/ZPP6STs"
--------------------
<p><input type="text" value="http://wf5.ru/re/W6g2rRZDuP/ZPP6STs" readonly="readonly" onclick="this.select();" style="width:240px" /></p>
"http://wf5.ru/re/joZAe2zBFDP/Rzs8At"
--------------------
"http://wf5.ru/re/W6g2rRZP/ZPP6STs"
--------------------

в чем моя ошибка

zion87
08-01-2012, 18:26
вот так получается, но выводятся только первые 2 строки, а остальные игнорируются

@echo off
for /f "usebackq tokens=* delims== " %%i IN (temp.txt) do echo %%i>>1.txt && (
for /f "usebackq tokens=5 delims== " %%z in (temp.txt) do echo %%z>>1.txt && (
echo ------------------------------------------------------------------>>1.txt && goto:eof
)
)
goto:eof

вот что выводится

<p>Последнее скачивание: 08.01.2012 13:45</p>
"http://wf5.ru/re/joZAe2zBFDPE/Rzs8AvI7t"
-----------------------------------------------------------------
дальше пусто

megaloman
08-01-2012, 18:57
@Echo Off

chcp 1251 >Nul
Set Log=Лог файл.txt
Del "%Log%" >Nul 1>Nul 2>Nul

Set i=1

FOR /F "usebackq tokens=3,5 delims=>=<" %%s IN (htmp.txt) DO Call :Bloknot "%%s" "%%t"
GoTo :Eof

:Bloknot

Set url=%~2

If %i%==1 (
Set i=2
Echo %~1>>"%Log%"
) Else (
Set i=1
Echo %url:~0,-9%>>"%Log%"
Echo -------------------------------------------->>"%Log%"
)

zion87
08-01-2012, 19:02
РАБОТАЕТ!!! УРА, СПАСИБО!

zion87
09-01-2012, 17:27
добавил кое что в код megaloman и столкнулся с проблемой

у меня выше тоже есть код, но я думаю он не должен повлиять, ведь если нет кода
выделенного красным все проходит отлично...
chcp 1251 >nul
del "%log%" >nul 1>nul 2>nul
set i=1
for /f "usebackq tokens=3,5 delims=>=<" %%s in (temp.txt) do Call :8 "%%s" "%%t"
if exist temp.txt del temp.txt
goto :eof
:8
set url=%~2
If %i%==1 (
set i=2
echo %~1>>"%log%"
) else (
set i=1
echo %url:~0,-9%>>"%log%"
)

for /f "tokens=*" %%d in (' dir /b /s /a-d %directory%\readme.txt ') do call:9 "%%d"
goto:eof
:9
for /f %%e in (' more +4 %1 ') do if %%e==%url:~0,-9% for /f "tokens=*" %%f in (' more +1 %1 ') do echo %%f>>"%log%" && (
echo ------------------------------------------------------------>>"%log%" && goto:eof
)


кодировка походу сбилась, вот что на выходе

Последнее скачивание: 08.01.2012 13:45
"http://wf5.ru/re/joZAe2zBFDPE/Rzs8AvI7t"
пользователь 1 - www.s.ru
------------------------------------------------------------
Последнее скачивание: 07.01.2012 19:15
"http://wf5.ru/re/W6g2rRZDu/ZPP6STs"
Пользователь 2 - www.dsad.ru
------------------------------------------------------------

свои строчки добавил с целью сравнения, тобеж если адрес лежащий 5 строкой в моем readme совпадает с переменной %url:~0,-9% то в %log% записывается имя пользователя (2 строка readme- выводиться в нормальной КИРИЛИЦЕ) которому принадлежит данная ссылка, есть идеи как исправить???

zion87
10-01-2012, 14:52
если нужно то вот весь код

@echo off
title Report-Sites & set siz=109 & set size=189 & set log=report.nfo
set file=temp.txt & if exist %log% del %log%
:one
color 0A & cls & echo ‚ўҐ¤ЁвҐ Ё¬п ¤ЁаҐЄв®аЁЁ б д*©«*¬Ё readme.nfo
echo Ё«Ё (-) ¤«п ўлЎ®а* бв**¤*ав*®© ¤ЁаҐЄв®аЁЁ.. & set /p directory=
If /i "%directory%"=="-" set directory=D:\temp
dir /s /p %directory%\readme.nfo>nul || (
color 0C && cls && echo ‚ ¤ҐаЁЄв®аЁЁ %directory% д*©«®ў readme.nfo *Ґ ®Ў**а㦥*® && (
pause && goto :one
)
)
cls & echo %directory% & echo @echo off>temp.bat & echo color 09>temp.bat
for /f "tokens=*" %%i in (' dir /b /s /a-d %directory%\readme.nfo ') do call:1 "%%i"
echo exit>>temp.bat & start/wait temp.bat & del temp.bat
for /f "tokens=*" %%x in (' dir /b /s /a-d *.html ') do cls && (
echo processing of files, please wait && call:2 "%%x"
)
del temp.txt && goto :5 & goto:eof
:5
if exist temp.txt del temp.txt
for /f "tokens=*" %%w in (' dir /b /s /a-d *.html ') do call:6 "%%w"
del *.html & goto :7 & goto:eof
:6
for /f "delims=*" %%a in (' more +64 %1 ') do echo %%a>>temp.txt && (
for /f "delims=*" %%b in (' more +62 %1 ') do echo %%b>>temp.txt && goto:eof
)
goto:eof
:4
for %%L in (%file%) do if /i %%~zL LSS %siz% del %%x && call:2 "%%x"
goto:eof
:2
rem ищем НЕТ
for /f "delims=*" %%z in (' more +64 %1 ') do echo %%z>temp.txt && goto :4 && goto:eof
:1
rem 5 строка из readme.nfo
for /f %%c in (' more +4 %1 ') do echo wget.exe %%c.html>>temp.bat && goto:eof
:7
chcp 1251 >nul & del "%log%" >nul 1>nul 2>nul & set i=1
for /f "usebackq tokens=3,5 delims=>=<" %%s in (temp.txt) do Call :8 "%%s" "%%t"
if exist temp.txt del temp.txt
copy /y report.nfo "%userprofile%\Рабочий стол\">nul && del report.nfo>nul
rem ------------------------------------
goto :eof
:8
set url=%~2
If %i%==1 (
set i=2
echo %~1>>"%log%"
) else (
set i=1
echo %url:~0,-9%>>"%log%"
)
for /f "tokens=*" %%d in (' dir /b /s /a-d %directory%\readme.nfo ') do call:9 "%%d"
goto:eof
:9
for /f %%e in (' more +4 %1 ') do if %%e==%url:~0,-9% for /f "tokens=*" %%f in (' more +1 %1 ') do echo %%f>>"%log%" && (
echo ------------------------------------------------------------>>"%log%" && goto:eof
)

zion87
14-01-2012, 18:19
Огромнеейшее спасибо megaloman, все получилось!!!




© OSzone.net 2001-2012