【问题标题】:Target in shortcut: The filename, directory name, or volume label syntax is incorrect快捷方式中的目标:文件名、目录名或卷标语法不正确
【发布时间】:2020-08-05 11:13:42
【问题描述】:

我安装了 Anaconda,我希望它的提示符在 D: 中以管理员权限打开。 由于启用了“以管理员身份运行”,Windows 中将忽略“开始于”选项。 所以我使用“Target”让它在 D:z 中打开,如下所示:

%windir%\System32\cmd.exe /k "D: & cd D:\" /k C:\ProgramData\Anaconda3\Scripts\activate.bat C:\ProgramData\Anaconda3

它确实在 D:\ 中打开,但我无法从 anaconda 发行版运行 python。 我收到此错误消息:

The filename, directory name, or volume label syntax is incorrect.

我该如何解决这个问题?

【问题讨论】:

  • 你有一个额外的/k

标签: python windows cmd anaconda


【解决方案1】:

我宁愿使用cd /d d:\ 并使用变量%ComSpec%

%ComSpec% /k cd /d d:\ & "C:\ProgramData\Anaconda3\Scripts\activate.bat" "C:\ProgramData\Anaconda3"

甚至:

%ComSpec% /k cd /d d:\ & "%programdata%\Anaconda3\Scripts\activate.bat" "%programdata%\Anaconda3"

【讨论】:

  • 您能否解释一下 %ComSpec% 和 /k 是什么?如何引用它们?
  • %Comspec%cmd.exe 的路径和可执行文件的环境变量。你可以通过从cmd 运行echo %comspec% 来看到这一点。然后/k 是`cmd` 的参数,用于保持窗口打开,/c 将在执行后关闭它,您可以从cmd 再次运行查看信息cmd /?
  • 简而言之。 %comspec% /k 有效地从其位置运行cmd.exe /k,通常默认为c:\windows\system32\cmd.exe
  • 具体来说,/k 是一个参数,用于在命令或批处理脚本终止后保持 cmd.exe 进程运行。这里不一定涉及控制台会话或控制台会话窗口(例如 cmd.exe 可以使用标志 DETACHED_PROCESSCREATE_NO_WINDOW 运行),即使有控制台,运行的命令也是如此可以生成一个附加到控制台的子进程,从而在 cmd.exe 和即时命令/脚本终止后保持控制台会话。
  • %ComSpec% 在现代 Windows 操作系统上默认解析为 C:\WINDOWS\system32\cmd.exe,但该内容是可编辑的。我已经看到许多 PC 错误地将其更改为 C:\Windows\SysWOW64\cmd.exe 认为这是为了在 64 位模式下运行,并且没有什么可以阻止用户或应用程序将其修改为不同的控制台/终端。因此,基于特定的 [cmd] 标签,我建议不要在这种情况下使用它。
猜你喜欢
  • 2014-06-30
  • 2019-05-24
  • 2019-09-30
  • 2018-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多