【发布时间】:2018-05-25 07:04:00
【问题描述】:
我试图编写一个脚本来测试文件路径的可用性。其中一个过程是用户必须输入文件路径或只需将文件拖到 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 命令提示符中。 (不带引号) 然后使用相同的方法测试文件路径(使用变量作为文件路径)。它工作正常。
我不明白。它们不是一回事吗?
什么时候
$filePath = "C:\Program Files\7-Zip\7z.exe"
以下 2 个命令应该有相同的结果!为什么他们不是?
Test-Path -Path $filePath
Test-Path -Path "C:\Program Files\7-Zip\7z.exe"
【问题讨论】:
-
我认为这种行为是正常的。当变量包含
"Something"时,就像您在控制台中写'" Something"'一样 -
不是一个完整的骗局,但与您的问题非常相关:stackoverflow.com/q/49817534
-
文件名/路径不能包含引号 (
") 字符。引号用于命令行解析器指定参数(表示参数包含空格)——引号不是参数的一部分。
标签: powershell