You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows命令行执行Java程序时输入*或&无法正常输出的问题咨询

解决Windows命令行向Java程序传递*或&等特殊字符的问题

嗨,这个问题我之前也踩过坑!你推测的完全正确——*和&都是Windows命令提示符(CMD)的特殊元字符,它们会被CMD优先解析,根本没机会原封不动传到你的Java程序里,这就是为啥输出不对。

问题根源拆解

  • *是通配符:CMD会自动把它替换成当前目录下所有文件/文件夹的名称列表,你看到的'T'应该是当前目录里某个文件名的首字符(比如你的Test.java)
  • &是命令分隔符:CMD会把&后面的内容当成新的独立命令执行,你的程序连这个字符都接收不到

可行的解决方案

这里有几种简单直接的方法,能让这些特殊字符正确传递给Java程序:

  1. 用双引号包裹特殊字符
    在CMD里执行命令时,把要传递的特殊字符放在双引号里,CMD就会把引号内的内容当作普通字符串处理:

    java Test "*"
    java Test "&"
    

    这样你的程序就能正常输出*和&了。

  2. 如果用PowerShell,可选反引号转义
    如果你用的是PowerShell而不是传统CMD,除了双引号,还可以用**反引号(`)**来转义特殊字符:

    java Test '*'
    java Test `&
    

    (注意反引号是键盘左上角、Tab键上方的那个符号)

  3. 其他特殊字符通用处理
    类似<、>、|这类CMD里的特殊字符,都可以用双引号包裹的方法来解决传递问题。

验证一下

比如在CMD里执行java Test "*",你的程序会输出*;执行java Test "&",就会输出&,完全符合预期。

内容的提问来源于stack exchange,提问作者boratocielli

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:07:50