我想遍历一个文件夹及其所有子文件夹,保留当前文件的计数器变量并将其重命名为$ counter $ ExistingFileName。
例如。
$count = 1;
foreach $file in $folder
{
$file.name = $count + $file.name;
$count++;
}
能够回答此问题的人将成为我的英雄! :)
顺便说一下,我使用的是Windows 7.
答案 0 :(得分:1)
SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
for /r .\folder %%f IN (*.*) do (
ren "%%f" "!count!%%~nf%%~xf"
set /a count=!count!+1)
答案 1 :(得分:1)
好吧,当你在我对你的帖子的评论中思考我的问题时(或者仍然可以回到这个网站阅读它们),这是我的试镜:
@ECHO OFF
SET "rootdir=%~1"
IF "%rootdir%"=="" SET rootdir=.
SET cnt=0
FOR /R "%rootdir%" %%f IN (*) DO (
SET /A cnt+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%f" "!cnt!%%~nxf"
ENDLOCAL
)
这将通过简单地在名称前添加数字来重命名文件,如下所示:
1file.txt
2program.exe
...
如果你愿意,你可以这样:
00001file.txt
00002program.exe
为此,您需要对上述脚本进行两处更改(以粗体突出显示):
@ECHO OFF
SET "rootdir=%~1"
IF "%rootdir%"=="" SET rootdir=.
SET cnt=10000
FOR /R "%rootdir%" %%f IN (*) DO (
SET /A cnt+=1
SETLOCAL EnableDelayedExpansion
RENAME "%%f" "!cnt:~1!%%~nxf"
ENDLOCAL
)