【发布时间】:2018-07-18 15:04:35
【问题描述】:
我有一个 FTP 服务器上的文件列表,我将其保存到本地驱动器。我还根据文件扩展名重命名文件。如何保存文件以便它们覆盖任何现有文件但也按顺序重命名,因此如果有多个具有相同扩展名的文件,它们将被命名为 ext.txt ext2.txt ext3.txt 等?我的代码目前正在覆盖文件,因此每个扩展名最终只有 1 个文件。这是相关的部分:
$myfiles | ForEach-Object{
$extension = ([System.IO.Path]::GetExtension($_.Name)).Trim(".")
$session.GetFiles($session.EscapeFileMask($remotePath + $_.Name),
"$localPath\$extension.txt" ).Check()
}
【问题讨论】:
-
从技术上讲,您无法重命名文件并覆盖它。您可以重命名文件,在这种情况下,它是具有不同名称的同一个文件。或者您使用相同的名称保存文件的新版本(覆盖)。如果您有要使用不同名称保存的文件的新版本,这将是两个操作。用新名称保存新文件,然后删除旧文件。至于如何亲自对名称进行排序,我会使用哈希。然后对于每个扩展,您在哈希中都有一个条目,其中键是扩展,值是您所在的序列号。
标签: powershell winscp