【问题标题】:How do I resolve '@echo' is not a recognized command如何解决“@echo”不是公认的命令
【发布时间】:2011-05-19 06:09:37
【问题描述】:

我已经实现了 Scott Hanselman 的方法来跟上 web.config 的 dev/qa/prod 版本: http://www.hanselman.com/blog/CommentView.aspx?guid=93bfa4b3-44cd-4681-b70e-f4a2b0386466

由于某种原因,当我编译我的项目时,我在输出窗口中收到此错误消息。
有什么想法吗?

------ Build started: Project: ABC.Flims.Web, Configuration: Development Any CPU ------
"C:\Projects\ballyhoo-trunk\src\ABC.Flims.Web\scripts/copyifnewer.bat" "C:\Projects\ballyhoo-trunk\src\ABC.Flims.Web\web.config.Development" "C:\Projects\ballyhoo-trunk\src\ABC.Flims.Web\web.config"
'@echo' is not recognized as an internal or external command,
operable program or batch file.  

这里是脚本文件:

@echo off
echo Comparing two files: %1 with %2

if not exist %1 goto File1NotFound
if not exist %2 goto File2NotFound

fc %1 %2 
if %ERRORLEVEL%==0 GOTO NoCopy

echo Files are not the same.  Copying %1 over %2
copy %1 %2 /y & goto END

:NoCopy
echo Files are the same.  Did nothing
goto END

:File1NotFound
echo %1 not found.
goto END

:File2NotFound
copy %1 %2 /y
goto END

:END
echo Done.

【问题讨论】:

    标签: asp.net visual-studio visual-studio-2008


    【解决方案1】:

    该文件可能是 Unicode 编码的,并且在开始时有一个 Byte Order Mark (BOM),这会导致批处理器失效。

    将其保存为 ASCII 文件,您应该没问题。您可以在 notepad 中执行此操作 - 从 File 菜单中选择 Save As... 并确保将 Encoding 下拉菜单设置为 ANSI

    【讨论】:

    • 这个问题解决了我正在处理的一个 Azure 启动问题。我使用的 .cmd 文件是作为 UTF-8 而不是 ANSI 创建的。以您建议的方式更改它可以解决问题。
    • 太糟糕了,Visual Studio 默认使用 utf-8,我需要恢复到记事本(++)才能保存为 ansi...
    • @JPHellemons - 您可以直接在 Visual Studio 中使用不同的编码进行保存。 msdn.microsoft.com/en-us/library/dxfdkfke.aspx
    • 我在 vs2017(社区版)中获得了默认的另存为对话框,尽管感谢您的努力! :)
    • 谢谢!由于 msdn 上的粗体字体,我一直在寻找“高级保存选项”而不是下拉菜单。截图帮了大忙。 Msdn 可以使用您的屏幕截图 ;) 或将保存旁边的下拉按钮加粗
    【解决方案2】:

    偶然发现了一个类似的问题。发现在visual studio中,如果你打开你的*.bat文件,你可以选择File -> Advanced Save Options。从编码下的下拉菜单中,选择“US-ASCII - 代码页 20127”

    【讨论】:

    【解决方案3】:

    一个名为 echo 的文件。

    P:\>echo.
    
    
    P:\>dir /b echo
    File Not Found
    
    P:\>echo echo >echo
    
    P:\>dir /b echo
    echo
    
    P:\>echo.
    'echo.' is not recognized as an internal or external command,
    operable program or batch file.
    
    P:\>del echo
    
    P:\>dir /b echo
    File Not Found
    
    P:\>echo.
    
    
    P:\>
    

    当前文件夹或路径中的回显会导致此问题。

    /回声

    【讨论】:

    • 正确,通常是“回声”。用于在一系列回显命令中输出一个空行。但是,如果(在我的情况下,通过测试重定向和打错字)一个文件存在于名为“echo”然后是“echo”的目录中。不再被处理为对带有空参数(空白行)的 echo 的调用,它被处理为对本地“echo”文件的调用。谢谢,这帮助我找到了问题:-)
    【解决方案4】:

    我认为你的文件是 Unicode 编码的,需要是 ascii。

    【讨论】:

      猜你喜欢
      • 2016-10-26
      • 1970-01-01
      • 2013-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 1970-01-01
      • 2014-09-16
      • 2014-12-03
      相关资源
      最近更新 更多