我想为特定列表中的每个文件名添加后缀(或前缀)。
下面的内容会起作用,但我不想捕获目录中的所有.tsv文件,只记录我在列表中指定的文件
forfiles /S /M *.tsv /C "cmd /c rename @file Early_@file
文件列表如下所示,我最好添加"早期"到文件名的末尾作为后缀,但文件名的开头也可以使用:
("DXOpen_BuysideAnalytics_AmerEqty_SF_20180502.tsv";"DXOpen_BuysideAnalytics_AmerEqty_IM_20180502.tsv")
答案 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 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
来创建新名称
不要对百分之二的标志感到困惑 - 在批处理文件中,它们必须加倍;在命令行中使用单个。