Переименовать список файлов в Windows CMD - PullRequest
0 голосов
/ 04 мая 2018

Я хочу добавить суффикс (или префикс) к каждому из имен файлов в определенном списке.

Будет работать что-то похожее на приведенное ниже, но я не хочу захватывать все файлы .tsv в каталоге, только те, которые я указываю в списке

forfiles /S /M *.tsv /C "cmd /c rename @file Early_@file

Список файлов выглядел бы так, как показано ниже, и я бы предпочел добавить «Ранний» в конец имен файлов в качестве суффикса, но начало имен файлов также будет работать:

("DXOpen_BuysideAnalytics_AmerEqty_SF_20180502.tsv";"DXOpen_BuysideAnalytics_AmerEqty_IM_20180502.tsv")

1 Ответ

0 голосов
/ 05 мая 2018
@Echo off
Set List="DXOpen_BuysideAnalytics_AmerEqty_SF_20180502.tsv";"DXOpen_BuysideAnalytics_AmerEqty_IM_20180502.tsv"
For %%I in (%List%) Do Ren %%I "%%~nI_EARLY%%~xI"

Команда For перебирает элементы, содержащиеся в переменной List (где элементы разделяются точками с запятой, запятыми, пробелами или символами табуляции). На каждой итерации цикла For текущий элемент представляется переменной %%I.

Прописная буква I для имени переменной - мой выбор, обычно можно использовать любую букву, прописную или строчную. Прописные буквы отличаются от строчных.

"for variable" (%I в данном случае) имеет необязательные модификаторы. Смотрите этот фрагмент из help for или for /?:

    %~I         - expands %I removing any surrounding quotes (")
    %~fI        - expands %I to a fully qualified path name
    %~dI        - expands %I to a drive letter only
    %~pI        - expands %I to a path only
    %~nI        - expands %I to a file name only
    %~xI        - expands %I to a file extension only

Я использую эти модификаторы для создания нового имени, вставляя _EARLY между исходным именем %%~nI и расширением %%~xI

Не запутайтесь в двух знаках процента - в пакетном файле их нужно удвоить; в командной строке используйте одиночные.

...