Как переименовать строки файлов в соответствии с текстом в другом файле? - PullRequest
0 голосов
/ 01 февраля 2019

У меня есть несколько файлов, таких как test1.html, test2.html ... testn.html и так далее, и в той же папке у меня есть names.txt со всеми именами длячто test {n} .html файлов.Как я могу перебрать names.txt файл и в соответствии со строками из него переименовать все HTML-файлы?

names.txt структура типа:

randomName 
NameRandom 
test 
Name
...

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Вы можете использовать:

@echo off
setlocal EnableDelayedExpansion

set "testn=0"
set "extension=html"

for /F "delims=" %%A IN (names.txt) do (
    set /a "testn+=1"
    if exist test!testn!.%extension% (
        echo Processing test!testn!.%extension%
        rename "test!testn!.%extension%" "%%A.%extension%"
    ) else (
        call:finish
    )
)
goto:finish

:finish
echo Finished renaming^^!
pause
exit /b

В дополнение к другому ответу это будет немного быстрее , если файл содержит больше строк, чем test*.htmlфайлы.

Расширение можно изменить / настроить на любое другое.

0 голосов
/ 01 февраля 2019

Вы можете использовать комбинацию FOR и SET /a, чтобы сделать это.По существу, вы должны увеличить счетчик на SET /a внутри цикла FOR, который читает файл names.txt, переименовывая файлы на основе значения счетчика и записи строки.

setlocal enableDelayedExpansion
SET counter=0
FOR /F "usebackq tokens=* delims=" %%f IN (names.txt) DO (
  SET /a counter=!counter!+1
  ECHO.N:!counter!
  REN "test!counter!.html" "%%f.html"
)

Для выполнения операций с переменными в циклеВам также необходимо включить отложенное расширение (setlocal enableDelayedExpansion).

...