3

伙计们有谁知道我该怎么做?我试图通过在文件名的开头添加 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++}

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

4

2 回答 2

3

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

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

注意:上面命令中的-WhatIf常用参数是预览操作。-WhatIf 一旦您确定该操作将执行您想要的操作,请删除。

([ref] $n).Value++技巧弥补了延迟绑定脚本块在调用者的子范围内运行的事实,在该子范围内可以看到调用者的变量,但是应用++(或分配值)会创建变量的临时本地副本(请参阅此答案有关 PowerShell 范围规则的概述)。
[ref] $n实际上返回对调用者变量对象的引用,.Value然后可以更新其属性。


至于你尝试了什么:

  • '{0} $_.Name.txt',作为引号字符串,由 PowerShell逐字解释;您不能在此类字符串中嵌入变量引用;为此,您需要引号 ( "...",并且您还需要$(...)嵌入表达式,例如) - 请参阅此答案$_.Name的底部部分以了解 PowerShell 的字符串文字的概述。
于 2021-06-24T22:24:13.277 回答
1

所以是的,我同意@Abraham,我没有看到您可以重命名文件但也保留原始文件而不复制它们的场景:)

这应该可以解决问题:

$i = 0; Get-ChildItem x:\path\to\files | ForEach-Object {
    $i++
    $destPath = Join-Path $_.DirectoryName -ChildPath "$i $($_.Name)"
    Copy-Item -Path $_.FullName -Destination $destPath
}

例子:

Mode                 LastWriteTime         Length Name                                                                                                                    
----                 -------------         ------ ----                                                                                                                    
-a----         6/24/2021   7:08 PM              2 1 testfile0.txt
-a----         6/24/2021   7:08 PM              2 2 testfile1.txt
-a----         6/24/2021   7:08 PM              2 3 testfile2.txt
-a----         6/24/2021   7:08 PM              2 4 testfile3.txt
-a----         6/24/2021   7:08 PM              2 5 testfile4.txt
-a----         6/24/2021   7:08 PM              2 testfile0.txt  
-a----         6/24/2021   7:08 PM              2 testfile1.txt  
-a----         6/24/2021   7:08 PM              2 testfile2.txt  
-a----         6/24/2021   7:08 PM              2 testfile3.txt  
-a----         6/24/2021   7:08 PM              2 testfile4.txt  
于 2021-06-24T22:10:18.667 回答