Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как добавить в конец каждой строки <br>? (http://forum.oszone.net/showthread.php?t=295366)

V!RTuE 11-02-2015 14:48 2469870

Как добавить в конец каждой строки <br>?
 
Надо добавить в текстовом файле в конец каждой строки <br>
Пробую так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion
SET f=%~dp0
set file=%f%ARCHIVE\Report.txt
set sym=<br>

copy nul "%temp%\tmp.tmp"
for /F "usebackq delims=" %%s in ("%file%") do (
  echo %%s%sym%>>"%temp%\tmp.tmp"
)

move "%temp%\tmp.tmp" "%file%"
pause

но ничего не получается. Я так понимаю проблема в том, что надо правильно экранировать символы < и >
Попробовал так:
Код:

set sym=^<br^>
но тоже ничего не получается

V!RTuE 11-02-2015 15:13 2469892

В общем пошел окольными путями и сделал так:
Код:

@echo off
setlocal enableextensions enabledelayedexpansion
SET f=%~dp0
set file=%f%ARCHIVE\Report.txt
set sym="<br>"

copy nul "%temp%\tmp.tmp"
for /F "usebackq delims=" %%s in ("%file%") do (
  echo %%s%sym%>>"%temp%\tmp.tmp"
)

move "%temp%\tmp.tmp" "%file%"

Set newfile=%f%ARCHIVE\Report2.txt

(For /f "usebackq delims=" %%a In ("%file%") Do (
        Set ta=%%a
        Echo !ta:"=!
))>"%newfile%"
del "%f%ARCHIVE\Report.txt"
ren "%f%ARCHIVE\Report2.txt" "Report.txt"

Может кто предложит как попроще это сделать?

Foreigner 11-02-2015 18:11 2469986

V!RTuE, А так просто не работает?
Код:

@echo off
setlocal

for /f "tokens=*" %%i in (file.txt) do 1>>file.tmp echo %%i^<br^>
move file.tmp file.txt


V!RTuE 11-02-2015 23:14 2470109

Цитата:

Цитата Foreigner
V!RTuE, А так просто не работает? »

не работает, если запускаю из другой папки, в имени которой есть пробелы (h:\Тестовый К+\):
Код:

@echo off
setlocal
SET f=%~dp0
for /f "tokens=*" %%i in ("%f%ARCHIVE\Report.txt") do 1>>"%f%ARCHIVE\file.tmp" echo %%i^<br^>
move "%f%ARCHIVE\file.tmp" "%f%ARCHIVE\Report.txt"

если же в строке убрать кавычки:
Код:

for /f "tokens=*" %%i in (%f%ARCHIVE\Report.txt) do 1>>"%f%ARCHIVE\file.tmp" echo %%i^<br^>
то просто не найдет папку, т.к. в имени ее есть пробелы. А если нет пробелов, то будет нормально работать

P.S.: Не пойму зачем ответ Georgio удалил?
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set f=%~dp0
set file=%f%ARCHIVE\Report.txt
set "sym=<br>"

for /f "delims=" %%s in ('type "%file%"^& del "%file%"') do (
 echo %%s!sym!>>"%file%"
 )

Вот этот код у меня как раз нормально работает :)

Iska 12-02-2015 04:02 2470156

V!RTuE, кавычки убирать не надо. Надо использовать параметр «usebackq», дабы разбор «for /f» рассматривал строку в кавычках в наборе внутри скобок не как просто строку, а как путь к файлу. Например:
Скрытый текст
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

echo Просто строка:
for /f "tokens=*" %%i in ("%~dp0ARCHIVE\Report.txt") do echo %%i^<br^>

echo.
echo Путь к файлу:
for /f "usebackq tokens=*" %%i in ("%~dp0ARCHIVE\Report.txt") do echo %%i^<br^>

endlocal
exit /b 0

Цитата:

Код:

E:\Песочница\0432\Тестовый К+>0001.cmd
Просто строка:
E:\Песочница\0432\Тестовый К+\ARCHIVE\Report.txt<br>

Путь к файлу:
sdrsafasdfs<br>
fdsgsdfg<br>
dfgsdfgd<br>



Foreigner 12-02-2015 08:59 2470214

Цитата:

Цитата V!RTuE
не работает, если запускаю из другой папки, в имени которой есть пробелы»

Боже ж мой.. Ну так лень добавить type или more?
Код:

for /f "tokens=*" %%i in ('type "C:\Путь с пробелами\file.txt" ') do 1>>file.tmp echo %%i^<br^>

V!RTuE 12-02-2015 09:13 2470220

Цитата:

Цитата Foreigner
Боже ж мой.. Ну так лень добавить type или more? »

Не лень, а пробелы в знаниях :) Только учусь (и то я не программист). А так большое спасибо вам и всем остальным, что помогаете

TakTo 28-02-2015 11:19 2476992

А как добавить что-нибудь в каждую N строку(в конец)? Например, в каждую 4.
Некоторые строки пусты, в других есть пробелы и символы []+=:.
:shuffle:

Georgio 01-03-2015 01:38 2477258

Цитата:

Цитата TakTo
А как добавить что-нибудь в каждую N строку(в конец)? Например, в каждую 4.
Некоторые строки пусты, в других есть пробелы и символы []+=:. »




В коде решил использовать ошибку деления на ноль:o:


Код:

@echo off& setlocal enableextensions

set "N=4"
set "add=something"
set "file=D:\Test\example.txt"

for /f "delims=" %%i in ('^<"%file%" find/n /v ""^& del "%file%"') do (
 set "x=%%i"
 set/a count+=1
 >>"%file%" cmd/v/c ">nul 2>&1 set/a 1/(count%%N)&& echo[!x:*]^=!|| echo[!x:*]^=!!add!"
 )

endlocal& exit/b


.

TakTo 03-03-2015 09:33 2478080

Georgio, спасибо
Скрытый текст


Время: 16:32.

Время: 16:32.
© OSzone.net 2001-