重命名Windows CMD中的文件列表

时间:2018-05-04 15:52:36

标签: batch-file cmd rename

我想为特定列表中的每个文件名添加后缀(或前缀)。

下面的内容会起作用,但我不想捕获目录中的所有.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 :(得分:2)

@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 forfor /?

中的此代码段
    %~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来创建新名称

不要对百分之二的标志感到困惑 - 在批处理文件中,它们必须加倍;在命令行中使用单个。