如何确定带有尾随空格的文件是否存在?

如何确定带有尾随空格的文件是否存在?

我需要一个脚本来遍历目录,查找是否存在带有尾随空格的文件,如果存在则记录它存在,然后重命名该文件。我被困在最重要的部分:查找文件是否存在。

判断文件是否存在的正常方法是

Test-Path -Path somepath

但是,如果您需要测试是否存在带有尾随空格的文件,则此方法不起作用。当给somepath定文件名中带有尾随空格的文件的已知路径时,所有这些都会失败:

Test-Path -Path somepath
Test-Path -Path 'somepath '
Test-Path -Path "somepath "
Test-Path -LiteralPath somepath
Test-Path -LiteralPath 'somepath '
Test-Path -LiteralPath "somepath "

Powershell 如何测试名称中带有空格的文件?

答案1

我发现问题不是 Powershell,而是 Windows。但是,Windows 确实有一种方法可以强制将文字字符串添加\\?\到路径前面:

对于文件 I/O,\\?\路径字符串的“ ”前缀会告知 Windows API 禁用所有字符串解析,并将其后的字符串直接发送到文件系统。例如,如果文件系统支持较大的路径和文件名,则可以超出 Windows API 强制执行的 MAX_PATH 限制。

我在 Windows 路径文档中找到了这一点在 Microsoft Docs 网站上。 将其更改为在开头somepath包含使得 PowerShell 对带有尾随空格的字符串按照预期方式运行。\\?\

相关内容