【问题标题】:Windows: in batch file, write multiple lines to text file?Windows:在批处理文件中,将多行写入文本文件?
【发布时间】:2011-03-02 20:12:31
【问题描述】:

如何在 Windows 批处理文件中执行以下操作?

  1. 写入名为 subdir/localsettings.py 的文件
  2. 覆盖所有现有内容...
  3. ...带有多行文本...
  4. ...包括一个字符串“[当前工作目录]/subdir”(我认为可能是%cd%/subdir?)

请注意,我想将此作为批处理脚本的一部分,所以我不能使用con + Enter(至少,也许我可以,但我不知道如何模拟 Enter 作为批处理脚本)。

谢谢!

【问题讨论】:

    标签: windows command-line batch-file


    【解决方案1】:

    使用输出重定向>>>

    echo one>%file%
    echo two>>%file%
    echo three>>%file%
    

    或者以更易读的方式:(在cmd.exe 中,使用“echo one >%file%”会在> 之前包含空格。)

    >%file%  echo one
    >>%file% echo two
    >>%file% echo three
    

    你也可以使用:

    (
        echo one
        echo two
        echo three
    ) >%file%
    

    【讨论】:

    • 对于空行,echo.echo=echo: 或...(cmd.exe 可以识别很多分隔符;不仅是空格。到目前为止,我发现.;,/=+` with echo`)
    • 选择的答案省略了stderr - 虽然在这个问题中可能没有必要,但在重定向输出时,您应该考虑如果命令行应用程序将错误输出到stderr,只需使用>或>>来重定向输出不会捕获错误。您需要使用 2>&1 或 2>>&1 重定向到同一文件,或指定不同的文件。例如:净/? >StdOutLog.txt 2>StdErrLog.txt(net 命令有点奇怪,因为它显示输出到标准错误 - net 子命令显示到标准输出,所以 net use >stdOutLog.txt 2>StdErrLog.txt 会在 stdOutLog 中找到数据.txt)
    • @grawity echo. 和大多数其他人可以与现有文件“echo”发生冲突,并且他们总是强制文件系统访问,echo( 似乎是“安全的”
    • @grawity:你是对的,并非所有变体都会检查文件,但它们对于/?on 等其他“问题”并不“安全”。在这里讨论echo. fails
    • @jeb:重新测试了我的“安全”列表; =echo=/? 失败,但其余的工作。 (关于您的论坛帖子:使用/,您可以使用echo//?,而不是echo/?。对于一个问号,简单的echo ?。但现在任何理智的人都会将脚本移植到另一种语言(提问者已经安装了 Python)。无论如何,这就是我会做的。)
    【解决方案2】:
    echo Line 1^
    
    Line 2^
    
    Line 3 >textfile.txt
    

    注意强制输出的双换行符:

    Line1
    Line2
    Line3
    

    还有:

    (echo Line 1^
    
    Line 2^
    
    Line 3)>textfile.txt
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多