|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - SED. Символы "невидимки". Как удалить? |
|
|
CMD/BAT - SED. Символы "невидимки". Как удалить?
|
Пользователь Сообщения: 63 |
Делаю копирование содержимого нескольких файлов в один методом:
copy C:\A\Bats\Search\1search\6search.txt+C:\A\Bats\Search\2write\6write.txt+C:\A\Bats\Search\3wiki\6wiki .txt C:\A\Bats\Search\0uncertainty\metka.txt (файлов с содержимым может быть и больше) В файлах может быть "!",цифры, а может и ничего не быть. При подобном "соединение" получил файл со "строчкой" - "! 1" только у меня в обычном блокноте это выглядит как "!1", а между этими двумя символами около 12 "невидимых" символов. Не знаю как называются. А самое главное Как от них избавиться оставив всё содержимое? Табы и пробелы не нужны если будут. Только видимые символы. В идеале выполнить это sed-ом, и желательно в одну простую строчку команду. пробовал удалить всё после "!" так - C:\A\Bats\Search\sed.exe s/!.+// C:\A\Bats\Search\0uncertainty\metka.txt>C:\A\Bats\Search\0uncertainty\metka2.txt - не работает. (Что "1" таким методом типо удалиться знал) Как решить? |
|
Отправлено: 04:58, 08-11-2017 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 06:09, 08-11-2017 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Iska, копирование проходит отлично если в текстовом файле лишь символы или же он абсолютно пуст. Но если создать несколько текстовых файлов, к примеру 1.txt, 2.txt, 3.txt и в них сохранить несколько пустых строчек("потапать" enter на клавиатуре), то после копирования содержимого в один файл там обнаружится куча этих "невидимых" символов. Вот именно от них и нужно избавиться. Наверное это "символы переноса каретки".
|
Отправлено: 07:45, 09-11-2017 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата NLOLegion:
Скрытый текст
![]() Цитата NLOLegion:
![]() Понимаете, есть такое понятие как кодировка файлов (плюс сюда же наличие/отсутствие BOM). Это раз. Второе — типы концов строк тоже бывают разными — пара CrLf для DOS/Windows, Lf для Unix и Cr для Mac. И чтобы в общем случае правильно склеить текстовые файлы с одновременным удалением пустых строк крайне желательно представлять с каким именно исходным материалом предстоит работать. В частном случае — да, можно попробовать обойтись пакетным файлом, наподобие (по причине отсуствия представленных образцов файлов — не проверялось): @echo off setlocal enableextensions enabledelayedexpansion >"C:\A\Bats\Search\0uncertainty\metka.txt" ( for %%i in ("C:\A\Bats\Search\1search\6search.txt" "C:\A\Bats\Search\2write\6write.txt" "C:\A\Bats\Search\3wiki\6wiki.txt" "C:\A\Bats\Search\0uncertainty\metka.txt") do ^ for /f "usebackq delims=" %%j in ("%%~i") do echo %%j ) endlocal exit /b 0 |
||
Отправлено: 08:35, 09-11-2017 | #4 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Вот папка из диска C.
Ещё раз попытаюсь обрисовать суть батника из папки: Есть несколько текстовых файлов 00.txt, 1.txt, 2.txt и т.п. Их содержимое копируется в один файл - 0.txt. В файле 00.txt всегда неизменно один символ 0 - это метка она нам понадобится. В других же файлах таких как 1.txt, 2.txt и т.п. может быть какая-то цифра. К примеру соответствующая номеру самого файла. А может быть и пустая строка, и две пустые строки. А дальше батник анализирует содержимое файла 0.txt, и если в файле лишь 0, то запускает блокнот, а если ещё какие-то символы то ничего не происходит. |
|
Отправлено: 09:52, 09-11-2017 | #5 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать ПАПКА
|
Отправлено: 09:53, 09-11-2017 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать NLOLegion, ну, вот о чём я и говорил — Unix:
![]() Цитата NLOLegion:
Скрытый текст
![]() С какими именно файлами мы должны работать, как их отделить от прочих в каталоге? В каком порядке должно осуществляться слияние? Если имена числовые, то а) сколько будет файлов и б) почему у Вас слияние такого странного вида — «00+1+2+…N→0», а не, например, «0+1+2+…N→Result»? Видите, сколько вопросов. |
|
Отправлено: 11:08, 09-11-2017 | #7 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Имена числовые для простоты. Их названия не принципиальны. В папке с файлами которые будут "сливаться" могут быть и другие не учавствующие в данном процессе txt файлы. а) файлов может быть любое количество (нужно использовать именно пути с именами (что-то типа C:\A\Bats\Search\0uncertainty\1.txt) б) это просто названия. они могут быть разные. никакой закономерности. В идеале выполнить удаление "переноса каретки" именно sed-ом. Но это в идеале. Сейчас пилю что-то типа C:\A\Bats\Search\sed.exe -e ":a;N;$!ba;s/\n//g" C:\A\Bats\Search\0uncertainty\000.txt>C:\A\Bats\Search\0uncertainty\0000.txt но в итоге один перенос каретки(или "разрыв строк") всё равно остаётся после слитых цифр из txt |
|
Отправлено: 11:57, 09-11-2017 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать NLOLegion, тогда чем Вас не устраивает предложенный выше код? Я беру Ваши файлы:
@echo off setlocal enableextensions enabledelayedexpansion >"0.txt" ( for %%i in (00.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt 10.txt 11.txt 13.txt) do for /f "usebackq delims=" %%j in ("%%~i") do echo %%j ) endlocal exit /b 0 ![]() Что не так?! |
Отправлено: 12:49, 09-11-2017 | #9 |
Пользователь Сообщения: 63
|
Профиль | Отправить PM | Цитировать Цитата Iska:
А в данном случае не так работает следующий код: setlocal for /f "tokens=*" %%i in ('dir /b /s C:\New\*.txt') do ( 1>nul findstr "\<%%~ni\>" "%%i" && call:exec %%~ni ) goto:eof :exec if %1 equ 0 start notepad Exit /b ведь в файле "0.txt" не только 0, но и 1. Следовательно блокнот не должен запускаться. |
|
Отправлено: 13:37, 09-11-2017 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Удалить из файла "Test.txt" все символы звездочка * | ufooo | Скриптовые языки администрирования Windows | 10 | 17-05-2015 14:29 | |
Интерфейс - [решено] Как удалить папку "Моя музыка","Мои Картинки", "Мое видео"? | verdix | Microsoft Windows 2000/XP | 3 | 03-10-2009 23:46 | |
[решено] Как удалить два "неудаляемых" вируса, их "назначение", и принцип работы | Drongo | Хочу все знать | 20 | 11-05-2008 01:14 | |
Разное - [решено] Как в список "Символы" добавить собственные символы для вставки в текст | T-IIIJ | Microsoft Windows 2000/XP | 4 | 23-02-2008 16:27 | |
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") | submaster | Microsoft Windows NT/2000/2003 | 5 | 13-09-2006 12:29 |
|