【问题标题】:How to Echo text that includes ">>"如何回显包含“>>”的文本
【发布时间】:2021-08-03 18:21:03
【问题描述】:

我是 Linux 和 Bat Scripts 的新手,所以这个问题对你们中的许多人来说似乎很容易。

我有一个 bat 脚本,它应该用文本覆盖文件。 我无法复制所有文本,因为它在我要复制的文本中包含“>>”。

例子:

ECHO "echo -e Text_to_copy >> /home/fileA.csv" >A.txt

上面的代码有效,但引号 (") 也被复制,我需要将它们从最终结果 (A.txt) 中删除。 如果我使用撇号 (') 而不是引号,那么我只会将部分文本添加到我的最终文件中 (echo -e Text_to_copy)

感谢任何建议

【问题讨论】:

  • 如果您在 Linux 上,您应该使用 bourne shell 变体,echo "foo >> bar" 无需写引号就可以正常工作。
  • 我正在使用 BAT 脚本,写入文件后,我需要将文本添加到远程服务器。我正在为此使用 PLINK。 “bourne shell 变体”也适用于此吗?
  • shbashzshksh 是 Linux 中的典型 shell。修改远程主机上的文件通常通过sshrsyncscp 完成。如果您要学习 Linux,最好熟悉标准工具集。
  • Linux 不支持 BAT 脚本。如果不涉及 Linux,请重新标记 Windows 和 cmd.exe 的问题。

标签: windows text cmd automation


【解决方案1】:

Bash 按预期工作:

andrew@andrew-Ubuntu:~$ echo "echo -e Text_to_copy >> /home/fileA.csv" >A.txt
andrew@andrew-Ubuntu:~$ cat A.txt 
echo -e Text_to_copy >> /home/fileA.csv
andrew@andrew-Ubuntu:~$ 

【讨论】:

    【解决方案2】:

    它可能会解决您的问题

    如果您想添加更多行,请添加到INFORMATION FIELD

    确保在添加信息时使用双引号 (")

    @echo off 
    setlocal enableextensions disabledelayedexpansion
    set "textFile=a.txt"
    
    ::----------Information--------
    echo "echo -e Text_to_copy >> /home/fileA.csv">%textfile%
    
    ::-----------------------------
    
        set se="
        set rl=
    
        for /f "delims=" %%i in ('type "%textFile%" ^& break ^> "%textFile%" ') do (
            set "line=%%i"
            setlocal enabledelayedexpansion
            >>"%textFile%" echo(!line:%se%=%rl%!
            endlocal
        )
    

    来源:Batch script to find and replace a string in text file without creating an extra output file for storing the modified file

    【讨论】:

    • " 被称为“双引号”(或有时只是“引号”)。 “反逗号”是文本处理中使用的印刷引号。他们只是不能在cmd
    猜你喜欢
    • 2021-03-17
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2015-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多