gpt4 book ai didi

PowerShell 将日期添加到文件夹中的所有文件名

转载 作者:行者123 更新时间:2023-12-02 01:29:32 24 4
gpt4 key购买 nike

我在名为 C:\01Source 的文件夹中拥有三个名为 First_File.txt Second_File.txt Thrid_File.txt 的文件我想将当前日期添加到文件名中,使它们看起来像这样:First_File_20220909.txt

终端输出是这样的:

What if: Performing the operation "Rename File" on target "Item: C:\01Source\First_File.txt Destination: C:\01Source\First_File_20220909.txt".(runs for all three files names)

但是...当我查看 C:\01Source 文件夹时,文件名没有更改,它们仍然是 First_File.txt

我错过了什么?

这是我的代码:

$Path = "C:\01Source\"
write-host $Path
$curDateTime = Get-Date -Format yyyyMMdd
Get-ChildItem $Path -Recurse |
Rename-Item -NewName {$_.Basename + '_' + $curDateTime + $_.Extension } -WhatIf

最佳答案

Abraham Zinala 提供了关键指针:

  • 上面命令中的 -WhatIf common parameter预览操作,而不实际执行操作。

    • 使用-WhatIf的目的是进行“试运行”,让您确认该命令在实际运行时是否能按预期工作,从而防止可能出现代价高昂的错误。<
  • 也就是说,您看到的消息如果:在...上执行“重命名文件”操作会告诉您发生什么>如果您在没有 -WhatIf 的情况下重新运行命令。

    • 因此,您只需从 Rename-Item 调用末尾删除 -WhatIf 即可执行实际的重命名。

请注意,并非所有 cmdlet 都支持 -WhatIf - 通常只有那些具有潜在破坏性后果的 cmdlet。

支持 -WhatIf 的 Cmdlet 还支持 common -Confirm parameter(反之亦然),它请求在处理之前显示每个输入对象的确认提示。

要查看给定 cmdlet 是否支持 -WhatIf/-Confirm,请查找 [-WhatIf]/[-Confirm ]syntax diagrams 输出的 Get-Help 中,或者当您传递 -? 开关时,或者当您使用 Get-Command -Syntax 时;例如,Rename-Item -?Get-Command -Syntax Rename-Item
或者,当您键入命令时,尝试使用制表符完成功能(键入类似 -Wha 的内容,然后按 Tab 来查看它是否自动完成完成-WhatIf)。


可以在您自己的函数和脚本中实现对-WhatIf-Confirm的支持,只要它们是advanced即可,如下例所示:

function Remove-Foo {
# * "SupportsShouldProcess" is what activates -WhatIf / -Confirm support.
# * The "ConfirmImpact" value determines whether confirmation prompts are shown
# by default, relative to the $ConfirmPreference preference variable.
# Setting the value to 'High' would prompt *by default*.
[CmdletBinding(SupportsShouldProcess, ConfirmImpact='Medium')]
param(
[Parameter(Mandatory, ValueFromPipeline)]
[string]
$FooId
)

process {
# $PSCmdlet.ShouldProcess() either shows the conformation prompt (with -Confirm)
# or prints a what-if message (with -WhatIf).
# If $false is returned, the confirmation prompt was declined, or a what-if message was printed,
# so no further action should be taken for this object.
if ($false -eq $PSCmdlet.ShouldProcess($FooId)) {
return # Do nothing (else)
}
# Regular processing.
"Removing $FooId..."
}

}

定义上述函数后的调用示例:

PS> 'foo', 'bar' | Remove-Foo -WhatIf
What if: Performing the operation "Remove-Foo" on target "foo".
What if: Performing the operation "Remove-Foo" on target "bar".

关于PowerShell 将日期添加到文件夹中的所有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73664612/

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