cmd.exe引发错误“&这次是意外的。”

时间:2019-12-25 17:42:19

标签: powershell unity3d batch-file cmd

所以我的问题是,当我刚刚在终端中运行cmd.exe时,我得到“&此时是意外的。” 最后的错误-看起来像这样

enter image description here

所以问题是当我想要运行unity_csc.bat文件并编译解决方案时,我在Unity 3D中遇到了错误。这些错误与我刚运行cmd.exe时的错误完全相同-因此我怀疑它不是基于Unity3D的问题(如果您愿意,可以在https://forum.unity.com/threads/2-empty-errors-in-console-was-unexpected-at-this-time.799110/处检查Unity3D特定线程)

有人知道为什么会这样吗?当我尝试运行.bat文件时也会发生这种情况-我怀疑这是为什么我无法编译Unity项目的原因

enter image description here

我正在运行具有所有最新更新的Windows 10

编辑:

由于cmd / d不会引发错误,因此此注册表记录可能存在一些问题? enter image description here

在用户文件夹中,我确实有此自动运行记录

@mode 20,5 & tasklist /FI "IMAGENAME eq SoundMixer.exe" 2>NUL | find /I /N "SoundMixer.exe">NUL && exit & if exist " ( start /MIN "" " & tasklist /FI "IMAGENAME eq explorer.exe" 2>NUL | find /I /N "explorer.exe">NUL && exit & explorer.exe & exit ) else ( tasklist /FI "IMAGENAME eq explorer.exe" 2>NUL | find /I /N "explorer.exe">NUL && exit & explorer.exe & exit )

enter image description here

1 个答案:

答案 0 :(得分:2)

Stephan提供了关键的指针:

听起来您为cmd.exe 定义了错误的 autorun 命令;也就是说,您的注册表定义了一个命令,该命令将在您每次调用cmd.exe时自动执行,并且该命令会导致您看到语法错误。

请注意,无论您是打开交互式cmd会话还是通过批处理文件调用还是通过cmd将命令传递给/C,这些命令都将执行。

/D传递到cmd会绕过所有自动运行命令。

注册表中有 两个位置,可以在其中定义这样的命令,一个在本地计算机级别(适用于所有用户),
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor,另一个仅适用于当前用户,
HKEY_CURRENT_USER\Software\Microsoft\Command Processor,名称为AutoRun
如果在两个位置都定义了命令,则HKEY_LOCAL_MACHINE的命令将首先运行。

列出任何已定义的自动运行命令:

Get-ItemProperty -ea Ignore ('HKCU:', 'HKLM:' -replace '$', '\Software\Microsoft\Command Processor') AutoRun

您可以使用以下PowerShell代码段从两个位置删除自动运行命令,但是请注意,如果需要,请使用海拔高度运行(以管理员身份)存在本地计算机值:

Get-ItemProperty -ea Ignore ('HKCU:', 'HKLM:' -replace '$', '\Software\Microsoft\Command Processor') AutoRun |
  Remove-ItemProperty -Name AutoRun -WhatIf

注意:上方命令中的-WhatIf common parameter会预览该操作。确定操作将执行您想要的操作后,请删除-WhatIf