【问题标题】:Executing multiple commands from a batch script on Windows在 Windows 上从批处理脚本执行多个命令
【发布时间】:2012-01-20 21:00:36
【问题描述】:

我在 Windows 上使用以下 bat 脚本。我的批处理脚本的第一行执行一个 jar,它首先在 shell 中打印一个菜单提示。我希望在 jar 中执行时将脚本的后续行用作输入(例如,选择第一个菜单选项,然后输入用户名,然后输入用户姓氏)。

我尝试了 Windows callstart 命令,但要么没有使用正确的选项,要么做错了什么,因为我总是收到“脚本中的每个后续行都无法识别为内部或外部命令、可运行程序或批处理文件”错误。

test.bat
java -classpath %LIBRARY_PATH% sample.Test
1
F名称
姓名

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:

    您需要将您的输入放在一个单独的文件中,然后重定向您的程序以从文件中读取输入,如下所示:

    test.bat

    [command] < [file]

    [command] 将是您启动 java 程序的命令,[file] 将是包含其余输入的文件的完整路径。

    【讨论】:

    • 这两种解决方案似乎遇到的问题是文本文件的每个回显或行都用作菜单的输入。意思是,我收到所有后续行的无效输入错误,因为名字没有映射到菜单中的数字选项。是否有我需要设置的标志或我应该格式化文件的方式?也许文本不应该换行。
    【解决方案2】:
    (
      echo 1
      echo FName
      echo LName
    ) | java -classpath %LIBRARY_PATH% sample.Test
    

    小心你的回声,因为有一些特殊情况。

    【讨论】:

    • 看起来我回显的每个字符串的末尾都添加了一个空格,因此我什至无法使用第一个回显选择菜单选项。错误:输入选择:尝试读取您的选择时出错!异常:java.lang.NumberFormatException:对于输入字符串:“1”
    • 确实,我可以重现那些多余的空间。 (我之前没有意识到它们存在,因为我使用的测试忽略了它们。)我想这一定是命令处理器的某种特质。
    猜你喜欢
    • 1970-01-01
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-19
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多