【问题标题】:Echo **Echo 3> args.txt** >X.bat, how do i fix this code?Echo **Echo 3> args.txt** >X.bat,我该如何修复这个代码?
【发布时间】:2015-01-03 16:54:51
【问题描述】:

Echo Echo 3> args.txt >X.bat

我正在尝试将这行代码 (Echo 3> args.txt) 放入一个名为 X 的批处理文件中,但最终会发生什么

: X 批处理文件
回声

:Args 文本文件
里面什么都没有

它将 echo (Just echo) 放入 x.batch 并创建一个空白的 args 文本文件。 如何修复代码以便将 Echo 3> args.txt 放入 x 批次?

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    使用

    Echo Echo 3^> args.txt>X.bat
    

    由于> 有特殊含义(重定向),它必须用^ 转义才能解释为文字字符。

    更多提示:

    >X.bat 之前不要插入空格,否则这个空格将被附加到创建的批处理文件的行尾。

    cmd.exe 将这一行执行为

    Echo Echo 3> args.txt 1>X.bat
    

    另请参阅 Microsoft 的 TechNet 文章 Using command redirection operators


    编辑:

    如果环境变量 password 在运行cmd.exe /? 后还可以包含在命令提示窗口中的帮助输出末尾列出的特殊字符,那么使用会更好:

    @echo off
    setlocal EnableDelayedExpansion
    set "password=<hello>"
    echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
    endlocal
    

    通过运行set /?help set 输出的命令set 帮助解释了延迟的环境变量扩展。此处使用延迟扩展来避免由于环境变量密码字符串中的&lt;&gt; 而导致运行此批处理文件时出现语法错误。

    此示例将附加到 Enter_PassCode.bat

    echo var1=<hello>>args.txt
    

    执行此批处理文件当然会再次导致以&lt;hello&gt; 作为密码执行错误。

    使 Enter_PassCode.bat 可执行且没有任何错误的解决方案是:

    @echo off
    setlocal EnableDelayedExpansion
    set "password=<hello>"
    echo @echo off>Enter_PassCode.bat
    echo setlocal EnableDelayedExpansion>>Enter_PassCode.bat
    echo set "password=!password!">>Enter_PassCode.bat
    endlocal
    echo echo var1=!password!^>args.txt>>Enter_PassCode.bat
    echo endlocal>>Enter_PassCode.bat
    

    此批处理代码生成带有内容的 Enter_PassCode.bat

    @echo off
    setlocal EnableDelayedExpansion
    set "password=<hello>"
    echo var1=!password!>args.txt
    endlocal
    

    【讨论】:

    • 我的命令行是“Echo echo var1=%password%^ >args.txt>> Enter_PassCode.bat”。当我运行它时,它会输出“echo var1=”你如何解决这个问题?
    • 您应该将您的问题编辑为您拥有的真实行和文件中的预期输出
    • 在避免回显多余空格的同时保持代码可读性的技巧是将重定向放在行首。 &gt;X.bat echo ^&gt;args.txt echo 3。这也避免了在尝试回显文字 12 时出现问题。如果你尝试echo 2&gt;txtfile,batch 认为2 表示标准错误,而不是文字数字 2。
    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 2016-03-05
    • 2020-12-02
    • 2022-01-21
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多