PowerShell:从文件夹中选择具有特定名称的文件,并通过添加当前日期来重命名。

13 浏览
0 Comments

PowerShell:从文件夹中选择具有特定名称的文件,并通过添加当前日期来重命名。

非常抱歉,如果我的问题看起来太简单。我对PowerShell完全是新手,还在学习基础知识。

我有一个文件夹E:\LastMonthBackup

SQL Server每天都会在其中添加一个名为ProjectBackup.bak的新文件。

我需要一个PowerShell脚本,可以通过添加文件创建日期来重命名这个新添加的文件。

因此,实质上我希望每个新文件都被命名为ProjectBackup_年_月_日.bak

我不希望脚本触碰已经在其名称中包含日期的文件。只有这个新的ProjectBackup.bak文件应该被重命名。

你能帮我编写这样的脚本吗?

我在这里找到了一个相关的问题here,但是当我尝试在我的脚本中应用其中的解决方案时,它没有起作用,或者可能是我弄错了什么。我对PowerShell完全是新手,所以非常感谢任何帮助。

0
0 Comments

问题的原因是需要从指定的文件夹中选择特定名称的文件,并且将其重命名为当前日期添加的文件名。解决方法是使用PowerShell脚本来实现。

下面是解决这个问题的代码:

$fileToRename = "E:\LastMonthBackup\ProjectBackup.bak"
if (Test-Path $fileToRename)
{
    $fileName = [system.io.path]::GetFileNameWithoutExtension($fileToRename)
    $dateSuffix = get-date -Format 'yyyy_MM_dd'
    $fileExtension = [system.io.path]::GetExtension($fileToRename)
    $newFileName = '{0}_{1}{2}' -f $fileName, $dateSuffix, $fileExtension
    Rename-Item -Path $fileToRename -NewName $newFileName
}

如果文件`$fileToRename`存在,脚本将确定文件名`ProjectBackup`、日期格式为`yyyy_MM_dd`和文件扩展名`.bak`,并格式化新的字符串。最后,它将文件重命名为新的名称。

这段代码使用PowerShell的`Test-Path`命令检查指定的文件是否存在。如果存在,脚本使用`GetFileNameWithoutExtension`方法获取文件名,并使用`get-date`命令获取当前日期并按照指定的格式`yyyy_MM_dd`进行格式化。然后,使用`GetExtension`方法获取文件扩展名,并使用字符串格式化操作符`-f`将文件名、日期后缀和扩展名拼接成新的文件名。最后,使用`Rename-Item`命令将文件重命名为新的名称。

解决方法中还提到了一个修改,将日期格式中的`mm`改为了`MM`,这是因为`mm`表示分钟,而`MM`表示月份。

感谢您花时间回答我的问题。您的脚本非常有效!

0