Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Перенос символов на новую строку из текстового вайла

Ответить
Настройки темы
VBS/WSH/JS - [решено] Перенос символов на новую строку из текстового вайла

Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4


Конфигурация

Профиль | Отправить PM | Цитировать


Привет всем.
Нужна ваша помощь, у меня есть файл текстовый, в нем есть строка количество символов может быть любым как русские так и английские символы.
Нужно создать скрипт который бы эту строчку в файле делил на символы и каждый символ переносил на новую строку, например строка "таракан" эту строчку нужно сделать так:
т
а
р
а
к
а
н
И сохранить файл. Заранее благодарю.

-------
Век живи, век учись! =)


Отправлено: 17:41, 31-05-2017

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата angel_lyucifer:
у меня есть файл текстовый »
Образец файла упакуйте в архив и приложите к сообщению, либо выложите на RGhost или Яндекс.Диск.

Цитата angel_lyucifer:
в нем есть строка »
По какому признаку мы сможем выделить эту строку среди прочих строк?

Отправлено: 18:36, 31-05-2017 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Код: Выделить весь код
(function(file, enc) { // enc Default = -2, Unicode = -1, ASCII = 0
  var f = null, arr = [];
  with (new ActiveXObject('Scripting.FileSystemObject')) {
    try {
      f = OpenTextFile(file, 1, false, enc);
      while (!f.AtEndOfStream) {
        arr.push(f.ReadLine().split('').join('\n'));
      }
      f.Close();

      f = OpenTextFile(file, 2, false, enc);
      f.Write(arr.join('\n'));
    }
    catch (e) { WScript.echo(e.message); }
    finally {
      if (f !== null) f.Close();
    }
  }
})(
  WScript.Arguments.length !== 2 ?
  (function() {
    WScript.echo('Синтаксис: ' + WScript.ScriptName + ' <файл кодировка>\n' +
      '.e.g.: C:\\> cscript ' + WScript.ScriptName + ' file.txt 0'
    );
    WScript.Quit(1);
  })() : WScript.Arguments.Unnamed(0), WScript.Arguments.Unnamed(1)
);

Отправлено: 18:52, 31-05-2017 | #3


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Вложения
Тип файла: zip Data.zip
(145 байт, 5 просмотров)

Цитата Iska:
По какому признаку мы сможем выделить эту строку среди прочих строк? »
Там одна строка.

-------
Век живи, век учись! =)


Отправлено: 20:32, 31-05-2017 | #4


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


angel_lyucifer, тогда просто воспользуйтесь кодом, предложенным коллегой greg zakharov, только замените в двух местах '\n' на '\r\n', иначе получите концы строк в формате Unix. Это JScript.

Отправлено: 21:17, 31-05-2017 | #5


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


Iska, для одной единственной строки использовать коды выше... как-то однако. Этот код мной был накидан исходя из соображений, что в файле может быть несколько строк (вызов функции ReadLine по достижении окончания файла). Но раз файл представляет из себя однострочник, цикл следует выкинуть, да и код можно значительно ужать. А если бы автор темы пользовался Vim, вся его задача сводилась бы к команде:
Код: Выделить весь код
vim -c "%s/\(.\)/\1\n\r/g" -c exit file.txt

Отправлено: 22:31, 31-05-2017 | #6


Аватара для angel_lyucifer

Старожил


Сообщения: 175
Благодарности: 4

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
vim -c "%s/\(.\)/\1\n\r/g" -c exit file.txt »
Как данную команду внедрить в файл bat?

-------
Век живи, век учись! =)


Отправлено: 23:14, 31-05-2017 | #7


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
Iska, для одной единственной строки использовать коды выше... как-то однако. »
Ну, дык, работает? Работает .

Цитата greg zakharov:
Но раз файл представляет из себя однострочник, цикл следует выкинуть, да и код можно значительно ужать. »
Можно.

Цитата angel_lyucifer:
Как данную команду внедрить в файл bat? »
Никак. У Вас нет vim.

Отправлено: 03:41, 01-06-2017 | #8


Забанен


Сообщения: 793
Благодарности: 260

Профиль | Цитировать


И отчего уверенность в том, что все начнется с WSH, но в итоге будет подведено к bat, не покадала меня с самого начала?

Iska, в идеале вообще было бы здорово отказаться от архаичного WSH, в пользу какого-нибудь интерпретируемого языка или технологии вроде NodeJS. Последний, к слову, в виду своей переносимости и единофайловой сущности (один единственный экзешник) для операций чтения\записи с\на диск(а)? очень даже ничего. Однако, в виду штатности PowerShell (начиная с Win7) проще использовать последний, ибо решением будет нечто вроде:
Код: Выделить весь код
(Get-Content file.txt).ToCharArray() | Out-File file.txt -Encoding Default
angel_lyucifer, как заметин Iska, Vim не является штатным текстовым процессором, поэтому если у Вас возникло желание воспользоваться приведенным решением, нужно позаботиться прежде об установке\сборке из исходников Vim самостоятельно. От себя же могу добавить еще несколько примеров решения Вашей задачи. Например, grep (есть порт под Windows):
Код: Выделить весь код
grep -o . file.txt > tmp.txt
move /y tmp.txt file.txt
Или сам командный язык Windows:
Код: Выделить весь код
@echo off
  setlocal enabledelayedexpansion
    set "i=0"
    @<file.txt (for /f "delims=" %%i in ('more') do set "s=%%i")
    :loop
      set "c=!s:~%i%,1!"
      if /i "!c!" neq "" echo.!c!>>file.txt:s&set /a "i+=1"&goto:loop
    more < file.txt:s > foo
  endlocal
exit /b
Вообще, решений у задачи великое множество, в том числе и штатными средствами, доступными практически в каждой версии Windows. Личным же выбором в данном случае был бы Vim или Perl.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:36, 01-06-2017 | #9


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата greg zakharov:
И отчего уверенность в том, что все начнется с WSH, но в итоге будет подведено к bat, не покадала меня с самого начала? »
Шаман, однако!

Цитата greg zakharov:
Iska, в идеале вообще было бы здорово отказаться от архаичного WSH, в пользу какого-нибудь интерпретируемого языка »
В комплекте поставки идут два-три языка: WSH с VBScript и JScript, и, начиная с Vista, PowerShell различных модификаций. При всём богатстве выбора другой альтернативы нет.

Цитата greg zakharov:
или технологии вроде NodeJS. »
Флаг в руки, флаг в руки.

Цитата greg zakharov:
Последний, к слову, в виду своей переносимости и единофайловой сущности (один единственный экзешник) для операций чтения\записи с\на диск(а)? очень даже ничего. »
Уж сколько их упало в эту бездну. Perl и Python, как отдельно, так и входным языком для WSH. Java с грандиозыми планами вселенского масштаба покорения всего и вся. Forth. KiXtart. AutoIt. Что я ещё не упомянул? Lua — новый калиф на час?

Отправлено: 10:33, 01-06-2017 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Перенос символов на новую строку из текстового вайла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Перевод каретки на новую строку sov44 Скриптовые языки администрирования Windows 15 08-12-2020 20:39
2010 - Перенос значений из столбца в строку VanUliK Microsoft Office (Word, Excel, Outlook и т.д.) 14 22-09-2014 23:02
2008 R2 - Перенос AD на новую ОС akulanikolay Windows Server 2008/2008 R2 1 07-08-2013 17:21
CMD/BAT - [решено] Перенос и удаление строк из текстового файла sk8ter Скриптовые языки администрирования Windows 15 03-10-2010 19:35
CMD/BAT - [решено] Перенос из заданных директорий в новую файлы, содержащие заданное слово Lil Crazy Скриптовые языки администрирования Windows 11 14-05-2010 20:46




 
Переход