gpt4 book ai didi

powershell - 如何通过在原始文件名前加上序列号来重命名文件?

转载 作者:行者123 更新时间:2023-12-04 01:01:15 38 4
gpt4 key购买 nike

伙计们,有人知道我该怎么做吗?我试图通过在文件名的开头添加 1、2、3 等来按数字顺序列出一些文件,同时还保留文件的原始名称。

这是我试过的代码

$nr = 1

Dir -path C:\x\y\deneme | %{Rename-Item $_ -NewName (‘{0} $_.Name.txt’ -f $nr++ )}

dir | select name

此代码仅对文件进行排序,例如 1、2、3...,而不保留原始名称。


$n = 1
Get-ChildItem *.txt | Rename-Item -NewName { $_.Name -replace $_.Name ,'{0} $_.Name' -f $n++}

这个并没有像我想的那样工作。

最佳答案

尝试以下操作,重命名当前目录中的所有 .txt 文件。通过在它们前面加上一个序列号:

$n = 1
Get-ChildItem *.txt |
Rename-Item -WhatIf -NewName { '{0} {1}' -f ([ref] $n).Value++, $_.Name }

注意:-WhatIf common parameter在上面的命令中预览 操作。一旦您确定该操作将执行您想要的操作,请删除 -WhatIf

([ref] $n).Value++ 技巧弥补了 delay-bind script blocks 的事实在调用者的 child 作用域中运行,其中调用者的变量是可见,但是应用 ++(或分配一个值)会创建一个 < em>变量的临时本地副本(有关 PowerShell 范围规则的概述,请参阅 this answer)。
[ref] $n 实际上返回对调用者变量对象的引用,然后可以更新其 .Value 属性。


至于你尝试了什么:

  • '{0} $_.Name.txt',作为一个引号字符串,由 PowerShell 逐字解释;您不能在此类字符串中嵌入变量引用;为此,您需要 double-quoting ("...",并且您还需要 $(...) 才能嵌入一​​个表达式,例如$_.Name) - 请参阅this answer 的底部部分有关 PowerShell 的字符串文字的概述。

关于powershell - 如何通过在原始文件名前加上序列号来重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68122907/

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