Консультация № 187475
21.06.2013, 19:37
0.00 руб.
0 4 2
Уважаемые эксперты! Пожалуйста, ответьте на вопрос:
Пример: Есть название файла 01 News.mp3 нужно получить в текстовом редакторе FN=01 News.mp3*N=News здесь необходима либо команда для cmd, либо bat файл...проблема в том что в итоге должно получиться название файла с порядковым номером и расширением и в этой же строчке без номера и расширения для примера у меня есть команда for %i in (*.mp3) do echo FN=%i*N=*%i>> music.txt но она два раза пишет номер и расширение файла - вот в чём вопрос...

Обсуждение

давно
Посетитель
7438
7205
21.06.2013, 22:13
общий
это ответ
Здравствуйте, Посетитель - 397284!
Без разбора строки на токены не обойтись...
Код:
@echo off
rem 01 News.mp3 нужно получить в текстовом редакторе FN=01 News.mp3*N=News

rem 1) создалим временный файл с именами файлов
for %%i in (*.mp3) do echo %%i >> temp.txt

rem 2) обработаем файл построчно

rem delims=. указывает, что разделителем значений является символ . и пробел
rem
rem tokens=1,2,3* приводит к тому, что в переменную %%i будет занесен номер.
rem В переменной j - имя
rem В переменной k - расширение
rem Т.к. в конце строки добавляется пробел, то используем еще один токен
rem В переменной l (* - до конца) - пустая строка

for /f "tokens=1,2,3* delims=. " %%i in (temp.txt) do echo FN=%%i %%j.%%k*N=%%j >> music.txt
del temp.txt
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
давно
Мастер-Эксперт
259041
7459
22.06.2013, 03:08
общий
Я не понял сути плохо-сформулированного Вопроса. В школе учат: Предложение - это законченная мысль. Между предложениями надо ставить точку. Иначе корявая фраза - это неуважение к людям, с кот-ми общаешься.
давно
Модератор
137394
1850
23.06.2013, 01:29
общий
это ответ
Здравствуйте, Посетитель - 397284! Если номер файла отделяется от имени пробелом, то вот решение без вспомгательных файлов.
Код:
@echo Off

Set Out=D:\Xlam\Music.txt
Set What=D:\Xlam\*.mp3

SetLocal EnableExtensions EnableDelayedExpansion

Del "%Out%" 2>Nul
FOR /F "usebackq delims=" %%i IN (`Dir "%What%" /B /A:-D 2^>Nul`) DO (
Set A=%%~ni
Set A=!A:* =!
>>"%Out%" echo FN=%%i*N=!A!
)
Работает и в том случае, если в имени файла имеются и другие пробелы

Или вариант с For другого формата
Код:
@echo Off

Set Out=D:\Xlam\Music.txt
Set What=D:\Xlam\*.mp3

SetLocal EnableExtensions EnableDelayedExpansion

Del "%Out%" 2>Nul
FOR %%i IN ("%What%") DO (
Set A=%%~ni
Set A=!A:* =!
>>"%Out%" echo FN=%%~nxi*N=!A!
)
Или вот еще вариант с for в одну строку
Код:
@echo Off

Set Out=D:\Xlam\Music.txt
Set What=D:\Xlam\*.mp3

Del "%Out%" 2>Nul
FOR /F "usebackq tokens=1,* delims= " %%i IN (`Dir "%What%" /B /A:-D 2^>Nul`) DO >>"%Out%" echo FN=%%i %%j*N=%%~nj

Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
давно
Модератор
137394
1850
23.06.2013, 09:08
общий
Добавил еще один вариант решения в ответ
Об авторе:
Понеже не словес красных бог слушает, но дел наших хощет
Форма ответа