gpt4 book ai didi

PowerShell 为循环错误重命名文件夹中的文件

转载 作者:行者123 更新时间:2023-12-01 23:19:56 26 4
gpt4 key购买 nike

我正在尝试对一个文件夹中的一堆 1000 个 *.json 文件进行批量重命名,但我在实际执行脚本时遇到了问题。

每个文件都是递增命名的:
"图片1.json", "图片2.json, ..... "图片1000.json"

我想将它们重命名为不带扩展名的整数 (-1)(我知道这听起来很奇怪,但必须这样做)。
所以

  1. “Image 1.json”变为:0
  2. “Image 2.json”变为:1
  3. “图片423.json”变为:422
  4. “图片1000.json”变为:998

为了不把事情搞砸,我创建了一个只包含前 10 个文件的测试文件夹:

enter image description here

我保存了它:C:\test\testfolder

这是我的脚本

$files = Get-Content
$x = 0
foreach ($file in $files) {
Rename-Item $file $x
$x++
}

我将脚本保存在:C:\test\rename.ps1

在 PowerShell 中,我导航到目录:

cd c:\test\testfolder\

然后在 PowerShell 中运行脚本

C:\test\rename.ps1

然后 Power shell 给了我这个(“它要求我输入,我正在输入数字......它无处可去):

我做错了什么?

enter image description here

最佳答案

这应该可以解决问题:

$folder = 'X:\path\to\jsonfolder'
$i = 0
Get-ChildItem -Path $folder -Filter *.json |
Sort-Object { [int][regex]::Match($_.BaseName,'\d+').Value } |
Rename-Item -NewName { [string]([ref]$i).Value++ }

Sort-Object 在那里是因为根据文件的命名,如果没有它,您会从 Image 1.json 跳转到 < em>Image 10.json等:

-a----          7/2/2021   7:32 PM              2 Image 1.json    
-a---- 7/2/2021 7:32 PM 2 Image 10.json
-a---- 7/2/2021 7:32 PM 2 Image 100.json
-a---- 7/2/2021 7:32 PM 2 Image 1000.json
-a---- 7/2/2021 7:32 PM 2 Image 101.json
-a---- 7/2/2021 7:32 PM 2 Image 102.json

([ref]$i).Value++ 技巧来自 this awesome answer , 归功于 mklement0。

关于PowerShell 为循环错误重命名文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68231487/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com