присвоить строчке из .txt переменную
Привет великим и всезнающим!!!! :)
Вообщем такое дело, есть N-ное количество папок в каталоге d:\temp, в каждой такой папке есть файл readme.txt
все readme.txt с разным содержанием но строчки у всех расположены так
HTML код:
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\
|
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
|
все всем спасибо вроде сам разобрался
Код:
@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
)
)
|
опять вопрос нарисовался можно как то решить проблему с пробелами
если выполнить команду
Код:
for /f %%i in (' more +1 %1 ') do echo %%i>>temp.txt
то строка которая выглядит на самом деле так
запишется в блокноте только до пробела тобеж только net, а как ее полностью вывести???
|
По умолчанию for считает разделителем пробел или символ табуляции. Поэтому, чтобы получить всю строку, нужно или сменить символ разделителя по умолчанию, или, что будет проще - сделать вот так:
Код:
For /F "tokens=*" %%I In ('More +1 %1') Do (Echo %%I>>temp.txt)
|
а то есть можно сделать во так
Код:
for /f "delims=*" %%i in (' more +1 %1 ') do echo %%i>>temp.txt
|
Вот вариант без 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.
|
Код:
FOR /F "usebackq tokens=5 delims== " %%s IN (htmp.txt) DO chrom.exe - %%s
megaloman, строчка не проходит - вот ее результат
Код:
Непредвиденное появление: %%s.
да и там 2 равно:
type="text" value="http://...."
|
Вложений: 2
Мне удалось повторить это сообщение только в том случае, если запускать строку в командном окне (в этом случае вместо %%s надо везде использовать %s и проблема разрешится). Я предполагал, что строка используется в батнике - отсюда и %%s
С Вашим примером из поста файла htmp.txt у меня работает, и из батника с %%s и из командного окна с %s. Высылаю свой батник т файл htmp.txt. Пришлите Ваш htmp.txt
|
вот блин и на самом деле работает! :)))))))))))))))))
СПАСИБО ОГРОМНОЕ megaloman!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
а как сделать так?
из этого
HTML код:
<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>
дальше могут быть такие же строки
сделать это в блокноте
HTML код:
Последнее скачивание: 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
)
)
но выводится вот так
HTML код:
<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"
--------------------
в чем моя ошибка
|
вот так получается, но выводятся только первые 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
вот что выводится
HTML код:
<p>Последнее скачивание: 08.01.2012 13:45</p>
"http://wf5.ru/re/joZAe2zBFDPE/Rzs8AvI7t"
-----------------------------------------------------------------
дальше пусто
|
Код:
@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%"
)
|
РАБОТАЕТ!!! УРА, СПАСИБО!
|
добавил кое что в код 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- выводиться в нормальной КИРИЛИЦЕ) которому принадлежит данная ссылка, есть идеи как исправить???
|
если нужно то вот весь код
Код:
@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
)
|
Огромнеейшее спасибо megaloman, все получилось!!!
|
Время: 16:17.
© OSzone.net 2001-