|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Спецсимволы при перенаправлении |
|
|
CMD/BAT - Спецсимволы при перенаправлении
|
Новый участник Сообщения: 5 |
В общем возникла проблема при написании батника:
считываю построчно текстовый файл и перенаправляю строки в другой тестовый файл, но проблема в том что в файле некоторые строки содержат спецсимволы (<>&) и при перенаправлении, через обычное echo возникают ошибки. Можно ли как-то за экранировать эти символы, что бы в новый файл все записалось как надо?? Вот часть скрипта: @echo off for /f "tokens=* delims=" %%a in (c:\12.txt) do call :Change "%%a" :Change set Text=%~1 echo %~1|findstr "43" > nul if %errorlevel% == 0 ( (echo VarC=200)>> c:\newfile.txt ) else ( echo %Text% >> c:\newfile.txt ) |
|
Отправлено: 22:26, 14-04-2012 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать Специмволы вообще экранируются через ^, но если неизвестно заранее, сколько их будет в строке - это не выход. Но если использовать вывод внутри цикла, то его особенностью будет то, что нахождение в считанной строке специмволов не повлияет на вывод. Пример:
Недостаток - если искомый паттерн ("43") будет в одной строке со спецсимволами, его Find не найдет. |
Последний раз редактировалось Anonymоus, 21-05-2012 в 03:07. Отправлено: 23:21, 14-04-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать вроде работает. только есть одна проблема, если встречается пустая строка, то в новый файл записывается "Режим вывода команд на экран (ECHO) отключен."
как это можно исправить?? |
Отправлено: 00:00, 15-04-2012 | #3 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:15, 15-04-2012 | #4 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Нет не помогает.
Сообщение появляется, только в том случае если перед переносом строки находится пробелы или знаки табуляции. |
|
Отправлено: 09:39, 15-04-2012 | #5 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать |
Последний раз редактировалось El Sanchez, 15-04-2012 в 17:47. Причина: пропустил завершающие кавычки Отправлено: 11:32, 15-04-2012 | #6 |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать El Sanchez,
Твой вариант выводит только номера строк, да и причем всех подряд, в том числе где есть пусты строки |
Отправлено: 12:30, 15-04-2012 | #7 |
Старожил Сообщения: 415
|
Профиль | Отправить PM | Цитировать H1ghlander, вот ещё такой вариант, в этом случае делает проверку, не является ли таб или пробел первым символом строки, если да - то пишет пустую строку. А вообще, это очень плохое решение, вам стоит помотреть в сторону sed (http://gnuwin32.sourceforge.net/packages/sed.htm)
@Echo Off SetLocal EnableDelayedExpansion Set InFile=test.txt Set OutFile=out.txt For /F "usebackq delims=" %%A In ("%InFile%") Do ( Set String=%%A Echo %%A|Find "43">nul&&( Echo VarC=200>>"%OutFile%" )||( If Not "!String:~,1!"==" " If Not "!String:~,1!"==" " Echo %%A>>"%OutFile%" If "!String:~,1!"==" " Echo.>>"%OutFile%" If "!String:~,1!"==" " Echo.>>"%OutFile%" ) ) 2>nul pause |
Отправлено: 13:37, 15-04-2012 | #8 |
Ветеран Сообщения: 1273
|
Профиль | Отправить PM | Цитировать Цитата H1ghlander:
![]() |
|
Отправлено: 17:51, 15-04-2012 | #9 |
Старожил Сообщения: 207
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 02:40, 21-05-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
2010 - PowerPoint 2010 не распознаются спецсимволы | Kaimor | Microsoft Office (Word, Excel, Outlook и т.д.) | 0 | 03-11-2011 18:52 | |
VBS/WSH/JS - необходимо менять разрешения на раздел реестра содержащий спецсимволы | thebas | Скриптовые языки администрирования Windows | 2 | 30-03-2009 15:19 | |
[решено] При перенаправлении принтера терминального клиента не назначаются права доступа | vladimirniki | Microsoft Windows NT/2000/2003 | 2 | 02-12-2008 07:54 | |
Прочее - Linux и спецсимволы... | Bren74 | Общий по Linux | 3 | 21-10-2007 22:20 | |
[решено] Не работают спецсимволы. | Catalyst | Microsoft Windows 2000/XP | 11 | 13-02-2007 13:54 |
|