在Windows 7中,我有一个只包含子文件夹而没有文件的文件夹。在子文件夹中,我有一堆.dcm文件(医学图像)。每个子文件夹中的文件具有相同的名称,我希望它们都具有不同的名称,更具体地说,我希望名称为1.dcm,2.dcm,3.dcm等。
现状: 文件夹A,B和C,每个文件夹包含File1.dcm,File2.dec,File3.dcm 想拥有此: 文件夹A包含文件1.dcm,2.dcm,3.dcm 文件夹B包含4.dcm,5.dcm,6.dcm的文件 文件夹C包含7.dcm,8.dcm,9.dcm
文件有没有办法编写一个按顺序进入每个子文件夹的批处理文件,并按数字顺序重命名文件?在编写Windows脚本时我非常非常新手,并且不知道如何去做。我找到了更改子文件夹中的文件扩展名的代码,但没有任何东西能够满足我的要求。
非常感谢任何帮助!
答案 0 :(得分:0)
@Echo off
For /f "tokens=1* delims=:" %%A in (
'Dir /B/S/ON/A-D "X:\path\to\folder\*.dcm" ^|findstr /N /V "^$"'
) Do Echo Ren "%%~fB" "%%A%%~xB"
如果输出似乎正确,则删除最后一行中的回声 如果在一个文件夹中有不同长度的数字,请注意按名称排序在2之前将有10个。
为了更好地理解一些解释:
Dir / B / S / ON / A-D" X:\ path \ to \ folder * .dcm"
/ B 是格式
/ S ubdtree recurse
/ O rder by N ame
/ A 分布 - (不是) D irectory
Findstr / N / V" ^ $"
/ N umber每个输出行用冒号分隔
/ V 支持比赛
" ^ $" a 注册 ular Ex 压力意味着空行
^匹配行的开头
$匹配一行的结尾
for / f" tokens = 1 * delims =:" %% A in(' command')执行
解析'命令'进入代币1 = %% A和* =休息到%% B
分隔符:仅用于标记1,
令牌2占用该行的其余部分(保留驱动器冒号很重要)
将变量%% A和%% B传递给do(部分)
可以使用〜修饰符修改for变量,参见For /?
%% ~fB~f表示全名,包括dirve和path,
%% A %% ~xB~x是%% ~xB的扩展名,包括点