批量遍历子文件夹并重命名文件

发布于 2024-11-04 08:58:14 字数 259 浏览 0 评论 0原文

我想遍历一个文件夹及其所有子文件夹,保留当前文件的计数器变量并将其重命名为 $counter$ExistingFileName。
例如,

$count = 1;  
foreach $file in $folder  
{  
  $file.name = $count + $file.name;  
  $count++;  
}

能回答这个问题的人将是我的英雄! :)
顺便说一句,我使用的是 Windows 7。

I would like to traverse a folder and all it's subfolders, keep a counter variable of the current file and rename it to $counter$ExistingFileName.
E.g.

$count = 1;  
foreach $file in $folder  
{  
  $file.name = $count + $file.name;  
  $count++;  
}

The person who can answer this will be my hero! :)
Btw I am using Windows 7.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笨死的猪 2024-11-11 08:58:14

好吧,当您在我对您的帖子的评论中思考我的问题时(或者可能仍在返回此网站阅读它们)时,这是我的试用镜头:

@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
)

All right, while you are pondering over my questions in my comment to your post (or maybe still making your way back to this site to read them), here's my trial shot:

@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
)

This will rename your files by simply prepending their names with numbers, like this:

1file.txt
2program.exe
...

If you like, you can have it this way:

00001file.txt
00002program.exe

For that you'll need to make two changes to the above script (highlighted in bold):

@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
)
猥︴琐丶欲为 2024-11-11 08:58:14
SETLOCAL ENABLEDELAYEDEXPANSION 
set count=1
for /r .\folder %%f IN (*.*) do (
    ren "%%f" "!count!%%~nf%%~xf"
    set /a count=!count!+1)
SETLOCAL ENABLEDELAYEDEXPANSION 
set count=1
for /r .\folder %%f IN (*.*) do (
    ren "%%f" "!count!%%~nf%%~xf"
    set /a count=!count!+1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文