【问题标题】:Running file through a program with arguments通过带有参数的程序运行文件
【发布时间】:2016-02-06 07:33:58
【问题描述】:

我的问题是我似乎无法通过我的程序传递参数。我不知道如何解释清楚,但在这里:

我希望能够通过带有参数的自定义解释器运行脚本文件。

例如:

AtomScript.exe main.atom -> Program runs

当我想通过批处理文件运行它时:

main.atom -> Program runs

现在,当我想在批处理文件中使用 AtomScript 命令通过程序传递参数时:

AtomScript.exe main.atom arg1 arg2 -> Program runs with arguments

参数被传递。但是当我想使用简单的 main.atom 命令使用参数运行它时,它不起作用:

main.atom arg1 arg2 -> Program runs without arguments

我现在不知道该怎么做。有什么建议吗?

【问题讨论】:

    标签: java batch-file command arguments command-line-arguments


    【解决方案1】:

    main.atom不是可执行文件,所以不能带任何参数

    Windows 知道必须启动哪个程序并这样做(忽略任何参数)

    只有直接启动可执行文件,才能定义参数(第一个为main.atom

    例如:

    C:\>assoc .txt
    .txt=txtfile
    
    C:\>ftype txtfile
    txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
    

    assoc 定义,扩展名是什么文件类型(“txtfile”)

    ftype 定义,对于这种文件类型必须做什么(启动记事本)

    你可以看到,只有一个参数%1(文件名(main.atom))。 当然你可以用更多的参数来扩展它(需要以管理员身份运行):

    ftype txtfile=%SystemRoot%\system32\NOTEPAD.EXE %*
    

    (这对这个例子没有多大意义),但我不推荐它(它只是在你的计算机上完成)。最好使用“官方方式”:在批处理文件中执行与命令行完全相同的操作:使用所需参数启动可执行文件:

    AtomScript.exe main.atom arg1 arg2    
    

    【讨论】:

    • 所以我必须在 %* 周围加上引号?
    • 啊——不错。如果你在它周围加上引号,它只是一个参数。我从我的示例中删除了它们(缺点:不再有带空格的参数)。但同样:不建议这样做 - 谨慎而明智地使用它。
    • 有没有办法让文件成为可执行文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-17
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多