Войти

Показать полную графическую версию : [решено] Создать текстовые файлы из списка в .txt


lyohalyoha
06-07-2021, 14:57
Здравствуйте! Может кто знает маленьку программку,которая может из файла .txt со списком внутри-создать несколько текстовых файлов с названиями из .txt
Например: внутри .txt имеется список:
Понедельник
Вторник
Среда
и т.д. И нужно,чтобы программа создала файлы
Понедельник.txt
Вторник.txt
Среда.txt
и т.д. Может через батник как-то можно это реализовать.Подскажите,пожалуйста!

megaloman
06-07-2021, 15:25
Понедельник
Вторник
Среда
Хроно синкластическая инфандибула
и т.д.@Echo Off
>nul chcp 1251
FOR /F "usebackq delims=" %%s IN ("Z:\Box_In\внутри.txt") DO >"Z:\Box_Out\%%s.txt" cd.
Exit /B 0
Я предположил, что Ваш текстовый файл создан в кодировке 1251, поэтому и батник надо сохранить в кодировке 1251, иначе надо удалить >nul chcp 1251 и сохранить батник в 866 кодировке.

lyohalyoha
06-07-2021, 16:14
@Echo Off
>nul chcp 1251
FOR /F "usebackq delims=" %%s IN ("Z:\Box_In\внутри.txt") DO >"Z:\Box_Out\%%s.txt" cd.
Exit /B 0 »
Всё работает,как надо.Спасибо большое!

greg zakharov
06-07-2021, 17:20
Например: внутри .txt имеется список:
Понедельник
Вторник
Среда
и т.д.
С днями недели ежели, то всё решается командой:
pwsh -nop -c "(Get-Culture ru-RU).DateTimeformat.DayNames.ForEach{New-Item -Name ""$($_).txt"" -ItemType File}"
pwsh делает это более наглядно, хотя и не является штатным.

megaloman
06-07-2021, 19:59
lyohalyoha, Если список файлов небольшой, можно обойтись без текстового файла с именами, например:@Echo Off
>nul chcp 1251
FOR %%s IN (Понедельник Вторник Среда Четверг Пятница Суббота Воскресенье "Свод за неделю") DO >"Z:\Box_Out\%%~s.txt" cd.
Exit /B 0
Если в имени предполагаются пробелы, в списке взять его в кавычки.

Iska
06-07-2021, 20:16
Хроно синкластическая инфандибула »
Я протестую :)! Инфандибулум!

megaloman
06-07-2021, 20:48
Я протестую »Отклоняю: давайте не будем засорять русский язык иностранными словами. Моя пятилетняя дочь много лет тому назад изобразила красками именно инфандибулу. :biggrin:

greg zakharov
06-07-2021, 21:10
...давайте не будем засорять русский язык... Моя пятилетняя дочь много лет тому назад...Засорять то можете не засорять, но со стилистикой у вас что-то не очень: "пятилетняя дочь много лет назад", - а сколько лет наперёд она пятилетняя?

Между прочим, если допускается использование sed, можно не гонять for:
>nul chcp 1251 & (sed "s/^/cd.>/;s/$/.txt/" list.txt |>nul cmd) & chcp 866>nul
Вполне корректно отработает в командной строке. Если же строки содержат пробелы:
>nul chcp 1251 & (sed "s/^/cd.>\"/;s/$/.txt\"/" list.txt |>nul cmd) & chcp 866>nul

Iska
06-07-2021, 21:49
Моя пятилетняя дочь много лет тому назад изобразила красками именно инфандибулу. »
Хочу-хочу-хочу. Покажите!




© OSzone.net 2001-2012