我想打开文件,其中包含来自Go {'1}}的资源管理器的两个空格。
此命令可以从Windows PowerShell中按预期工作。
exec.Command()
使用Go' Explorer "file://C:\Users\1. Sample\2. Sample2"
与fileName一起使用包含这样的空格。
exec.Command()
但是fileName包含两个这样的空格
失败了exec.Command(`explorer`, "file://C:\Users\1. Sample").CombinedOutput()
请告诉我如何解决这个问题。
此代码按预期工作。感谢。
exec.Command(`explorer`, "file://C:\Users\1. Sample\2. Sample2").CombinedOutput()
但实际输入是字符串(不是原始字符串文字),如下所示。所以我认为我需要将字符串转换为原始字符串。
exec.Command(`explorer`, `file://C:\Users\1. Sample\2. Sample2`).CombinedOutput()
答案 0 :(得分:3)
文件名中有2个空格与无法运行命令无关。
您正在使用interpreted string literals:
"file://C:\Users\1. Sample\2. Sample2"
在解释的字符串文字中,反斜杠字符\
是特殊的,如果您希望string
有反斜杠,则必须将其转义,并且转义序列为2个反向:{{1} }:
\\
甚至更好:使用raw string literals(然后你不需要逃避它):
"file://C:\\Users\\1. Sample\\2. Sample2"
文件名中那个奇怪的`file://C:\Users\1. Sample\2. Sample2`
字符也可能导致问题。如果在Go源代码中包含它,它将被解释并编码为UTF-8字符串。您将此作为参数传递,但您的操作系统(Windows)在检查文件名时可能使用不同的字符编码,因此可能无法找到它。如果更正字符串文字不足以使其工作,请从文件名中删除那个奇怪的2
字符。
当您从PowerShell运行该命令时,它可以正常工作,因为PowerShell不期望解释的字符串,并且它使用也用于存储文件名的编码。
同样Cmd.CombinedOutput()
(就像Cmd.Run()
和Cmd.Start()
)会返回2
,请务必检查,因为它可能会提供其他信息。