将长文件名转换为短名称 Windows 10?

将长文件名转换为短名称 Windows 10?

有没有办法在 PC 上将长文件名转换为截断的短格式?有没有简单的方法可以做到这一点?我是命令提示符/PowerShell 的新手,不完全了解长脚本的作用以及如何修改它们。

我想将所有文件传输到外部硬盘驱动器,但许多文件来自名称很长的 Mac,因此当我尝试传输它们时收到错误。

答案1

将以下内容保存到文件中Set-DosFileName.ps1

[CmdletBinding(SupportsShouldProcess=$true)]
Param(
    [parameter(Mandatory=$true)]
    [string]$folder,
    [switch]$recurse
)

$fso = New-Object -ComObject Scripting.FileSystemObject

Get-ChildItem -Path $folder -File -Recurse:$recurse | ForEach-Object {

    $shortName = $fso.getfile($_.Fullname).ShortName
    if ($shortName -ne $_.Name)
    {
        $fullShortName = Join-Path $_.Directory -ChildPath $shortName
        Move-Item -LiteralPath $_.Fullname -Destination $fullShortName
    }
}

要使用此功能,请打开 PowerShell 窗口并更改为保存文件的目录:

cd "D:\folder where you saved the script"

然后:

.\Set-DosFileName.ps1 -folder "D:\myfiles\Foo Bar" -whatif

该脚本应该显示如何重命名您的文件。

要包含子目录中的所有文件,请添加-recurse开关:

.\Set-DosFileName.ps1 -folder "D:\myfiles\Foo Bar" -whatif -recurse

如果一切正常,请移除-whatif开关以实际重命名文件。我仍然会保留原始文件的备份,以防万一出现问题。

我还没有对大量文件进行测试,请注意有些文件名可能非常难看。

答案2

自 Windows 10 版本 1607 起,文件路径长度限制已被取消。要启用此功能,打开regedit.exe,转到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem并创建一个 DOWRD 32BitLongPathsEnabled并将值更改为1

在此处输入图片描述

现在 260 个字符的问题已经消失。

相关内容