Другие языки программирования и технологии

Нужен bat файл, чтобы переименовал все txt файлы в папке, заменяя имя на первую строку содержимого файла

В папке есть много текстовых файлов с именами File001.txt, File002.txt и т. д.

Со следующим содержанием

File001.txt

Содержание файла:

Зимний вечер на даче
Нина Дедлова
Полутьма. Ещё не поздно.
Понедельник. Тишина.
Говорят с зимою сосны.
Воздух чистый и морозный…
И на даче я одна.

File001.txt

Содержание файла:

Приход зимы
Людмила Шишенина
Пушистый снег – лебяжье покрывало,
Сорока притоптала поутру.
Узоры, покружив, нарисовала,
И горделиво ходит по ковру.

и т. д.

Нужен bat файл, чтобы переименовал все файлы в папке, заменяя имя на первую строку содержимого файла, например:

File001.txt
File001.txt
и т. д.

Переименовывает в:

Зимний вечер на даче. txt
Приход зимы. txt
и т. д.

Windows
Обновляется PowerShell

Пишется batch:

@echo off
powershell -executionpolicy bypass -command "Get-ChildItem -Filter '*.txt' | foreach {Rename-Item $_.FullName """$(Get-Content $_.FullName ^| Select-Object -First 1)$($_.Extension)"""}"
pause
exit

Решение cyberforum ru
Иван Прокофьев
Иван Прокофьев
202
Лучший ответ
setlocal enabledelayedexpansion
for %%i in (file???.txt) do (
set /p ss=<%%i
ren %%i "!ss!.txt"
)
Мирас Конкаев
Мирас Конкаев
66 162
Игорь Лапец Поместил код в bat файл, запустил в папке с текстовыми документами. Только мелькнула командная строка и ничего не произошло.
BAT это не сделает.
Viktor Zarva
Viktor Zarva
88 995
Артемий Ковалев Zf Сделает легко
Вот такой скрипт сохраняет в переменную var первую строчку файла file.txt затем выводит переменную. Пробелы слева и справа от знака меньше нужно убрать и обернуть все в цикл

set /p var= < %~dp0\file.txt
@echo %var%
Игорь Лапец Поместил код в bat файл, убрал пробелы, запустил в папке с текстовыми документами. Только мелькнула командная строка и ничего не произошло.
программой очень легко сделать.

1) программа определяет все файлы в папке в которой находится (записываем абсолютные пути в массив)
2) для каждого файла есть два пути
первый простой: прочитать весь файл а затем просто вычленить первую строку
второй тоже простой (но чуть сложнее) прочитать файл в виде потока до первого символа переноса строки

3) переименовать файл в полученную строку с сохранением расширения

Profit написать можно минут за 10
Женя Морозов
Женя Морозов
22 008
Батраз Дзабаев readline для этого существует; весь файл ни в коем случае читать НЕ НАДО
Выдели все файлы, и переименую тот первый и все .
Чингиз Абасов
Чингиз Абасов
21 422
Игорь Лапец Но мне надо чтобы заменял имя на первую строку содержимого файла
Advanced Renamer скачайте
Игорь Лапец Не нашел там такой функции
не .bat, а .sh; под линуксом это намного проще сделать
там будут команды readline, cat и move
ПВ
Пто Веста
15 114
Женя Сычев для того, чтобы переименовать 10 файлов, надо ставить убунту?
Или по другому
Как там с пробелами в именах файлов для линукса, работает?
Игорь Лапец Линукс не известен...
На нормальном ЯП будет проще сделать, чем пытаться высрать это в бат.
Игорь Смирнов
Игорь Смирнов
2 822
Проще написать утилиту на нормальном ЯП, например, С++ или Python, и запускать её из командной строки.
Ну, норм
Rais .
Rais .
107