echo|set /p=可以输出不带换行符的变量。
我正试图循环这样的文本文件

for /f %%a in (zen.txt) do (
    set var=%%a
    echo !var!
    echo|set /p=!var!
)

有些行只有一个",例如:
"he said...

echo正确输出上述行,而echo|set /p=不输出任何内容。
当使用echo|set /p=时,是否可以在变量中转义双引号。

最佳答案

我们需要为set/p提供额外的报价。您可以尝试类似的操作(当然,不需要创建测试文件)

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem TESTING - Create a input file
    >zen.txt (
        echo "He said...
        echo It was not me!
        echo It was "the thing"!
        echo ...
        echo ^& it was all"  ( The end )
    )

    for /f "delims=" %%a in (zen.txt) do (
        <nul set /p="%%a "
    )

echo|set /p模拟按回车键终止set/p提示,但它为管道的每一侧创建单独的cmd实例,使其变慢。输入重定向足以获得相同的结果,但速度更快,资源使用更少。

关于windows - 使用echo | set/p =时,在变量中转义双引号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53184045/

10-16 15:54