2013-06-28 3 views
-2

Мне нужен пакетный файл, который читает имя описания, присутствующее в файле nest.txt, и переименует это имя файла на основе имени описания.Переименование файла на основе его содержимого с использованием пакетного файла

Например, у меня есть имя файла под названием «nest.txt», и когда мы открываем текстовый файл (nest.txt), вторая строка имени файла имеет описание (скажем, Description = Man), тогда командный файл должен переименовывать мой nest.txt файл в Man.txt

Открыть файл nest.txt Скопируйте имя описание присутствует в файле nest.txt

Header 
Description=MAN 
Menu KeyWords=MAN_ABC 

Теперь закройте этот файл и переименовать файл nest.txt в MAN. txt

+0

Как определить, какие файлы нужно открывать/переименовывать? Например, может ли быть несколько файлов (например, * .txt)? –

+0

да, у нас есть несколько файлов с различным именем файла, и каждый файл имеет другое описание. поэтому каждый файл должен быть переименован на основе его имени описания. Пожалуйста, помогите мне. – Sumit

+0

То, о чем вы просите, не сложно, но это проблематично, потому что использование файловой маски, такой как * .txt, будет находить файлы снова после их переименования. Я наберу ответ, который покажет вам, как делать то, что вы просите, и избегайте проблем с файловой маской. –

ответ

0

Следующий командный файл принимает одну команду li ne и должен запускаться из папки, в которой существуют переименованные файлы. Вы можете легко добавить в пакетный файл больше кода, чтобы сделать его более интеллектуальным (например, изменить папку, жесткий код *.txt вместо %1 и т. Д.).

Таким образом, если пакетный файл называется fixfilenames.bat и находится в той же папке с файлами TXT, из командной строки, введите fixfilenames *.txt и переименовывает файлы первым, чтобы иметь расширение temp_txt так, чтобы петля for выиграл» t забрать файлы снова после их переименования. Затем, когда это будет сделано, он переименует все файлы temp_txt в файлы txt.

@echo off 

for %%i in (%1) do (
    for /f "tokens=2 delims==" %%j in ('findstr /B /I "Description=" "%%i"') do (
    ren "%%i" "%%j.temp_txt" 
) 
) 

ren *.temp_txt *.txt 
+0

Отлично Спасибо за тонну :) – Sumit

+0

Джеймс отлично работает для обычного текстового описания, но когда у нас есть описание имя со специальным символом, таким как linéaire, оно терпит неудачу. Можете ли вы изменить и помочь мне? – Sumit

+0

Извините. Я не знаю много о расширенных символах и именах файлов. Попробуйте найти расширенные символы, командный файл и кодовую страницу. –