gpt4 book ai didi

powershell - Powershell带引号问题的文件路径

转载 作者:行者123 更新时间:2023-12-03 00:34:02 24 4
gpt4 key购买 nike

我试图编写一个脚本来测试文件路径的可用性。过程之一是用户必须输入文件路径,或者只是将文件拖到Powershell命令提示符下。

在这个过程中
用户将输入文件路径,例如 C:\ Program Files \ 7-Zip \ 7z.exe ,该字符串将成为 $ filePath 变量的值,该变量将用作Test-Path命令的参数。

但是有时,用户只是将文件拖到Powershell命令提示符下,以便字符串将带有一对引号,如图1所示。
(“C:\ Program Files \ 7-Zip \ 7z.exe”)
Picture 1

然后,您将看到当我尝试使用带有$ filePath变量的Test-Path命令测试路径,而$ filePath的值(字符串)包含一对一对引号时,即使该路径也始终为False存在并且有效。
但是,当我使用相同的Test-Path命令而不使用变量时(我的意思是仅将文件路径复制并粘贴到命令中),它可以正常工作。

有点奇怪!

我尝试通过键盘在变量中键入文件路径,而不是将文件拖到Powershell命令提示符中。 (不带引号)
然后使用相同的方法测试文件路径(使用变量作为文件路径)。它工作正常。

Picture 2

我不明白他们不是同一回事吗?

什么时候
$filePath = "C:\Program Files\7-Zip\7z.exe"
以下两个命令应具有相同的结果!为什么不是?

Test-Path -Path $filePath
Test-Path -Path "C:\Program Files\7-Zip\7z.exe"

最佳答案

在拖放的情况下,如果路径中没有空格,它将返回true。如果有空格,那么PowerShell会在其周围加上引号。在这种情况下,PowerShell实际上会将路径视为"C:\Program Files\7-Zip\7z.exe"
您可以做的是使用-replace运算子,例如:

Test-Path -path ($filepath -replace '"', "") -PathType Leaf



正如@Josefz在评论中所建议的,您还可以使用 Trim()方法,例如-
Test-Path -path ($filepath.Trim('"')) -PathType Leaf

不能完全解释您的问题,但是您可以将其用作解决方法。

关于powershell - Powershell带引号问题的文件路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50523319/

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