批量遍历子文件夹和重命名文件
我想遍历一个文件夹及其所有子文件夹,保留当前文件的计数器变量并将其重命名为$ counter $ ExistingFileName。
例如批量遍历子文件夹和重命名文件
$count = 1;
foreach $file in $folder
{
$file.name = $count + $file.name;
$count++;
}
能回答这个问题的人将是我的英雄! :)
顺便说一句,我使用的是Windows 7
好,而你正在琢磨我在我的评论的问题到您的文章(或者可能还在做自己的方式回到这个网站来阅读)这里是我的试验照射:
@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
)
回答!但是当我将这段代码粘贴到控制台中时,我在FOR后面得到一个语法错误,说“%% f”无法处理 – 2011-04-30 10:26:09
我不知道你明白了你的意思,这应该是一个脚本,保存在扩展名为.bat或.cmd的文本文件中,然后运行脚本。顺便说一下,我忘了补充一点,它也接受一个参数,它将成为从哪里开始遍历的根文件夹。 – 2011-04-30 10:31:17
好的,我把它粘贴到rename.bat。然后从控制台,我打电话rename.bat c:\ test,我也尝试rename.bat“c:\ test”,但得到一个语法错误:( – 2011-04-30 10:44:28
SETLOCAL ENABLEDELAYEDEXPANSION
set count=1
for /r .\folder %%f IN (*.*) do (
ren "%%f" "!count!%%~nf%%~xf"
set /a count=!count!+1)
我试图将它粘贴到控制台中,但出现语法错误! :( – 2011-04-30 10:38:07
把它放到一个批处理文件中,然后运行批处理文件,将。\文件夹重命名为你想要处理的HD上的文件夹 – 2011-04-30 10:54:58
所以如果文件夹是c:\ test \ 1,脚本怎么样应该看起来像?我正在搞一些选项,但总是得到语法错误 – 2011-04-30 11:17:21
那么容易吗?我*可以*回答这个问题。 :)但严重的是,新的名称模板到底是什么?它是否像'file.ext' ==>'1file.ext'?或者它应该是'1 $ file.ext'?或者可能是'00001file.ext'? – 2011-04-30 09:51:19