Batch file 在变量中使用引号批处理时出现问题

Batch file 在变量中使用引号批处理时出现问题,batch-file,quotes,Batch File,Quotes,这里的批处理脚本相对较新,我一直在到处搜索答案,但没有找到任何东西 以下是我到目前为止对批处理脚本的了解 @echo off set addtext="text to add includes spaces" for /f "delims=" %%l in (file.txt) do ( echo %%l %addtext% >> tmpfile.txt ) 我希望在文件中的每一行都添加一行文本,但我的问题在于双引号。我不希望引号与文本一起显示 我只有引号,因为文本字符

这里的批处理脚本相对较新,我一直在到处搜索答案,但没有找到任何东西

以下是我到目前为止对批处理脚本的了解

@echo off

set addtext="text to add includes spaces"

for /f "delims=" %%l in (file.txt) do (
    echo %%l %addtext% >> tmpfile.txt
)
我希望在文件中的每一行都添加一行文本,但我的问题在于双引号。我不希望引号与文本一起显示
我只有引号,因为文本字符串中有空格,我希望添加到每一行

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "addtext=text to add includes spaces"

    for /f "delims=" %%l in (file.txt) do (
        >> tmpfile.txt echo %%l %addtext%
    )
这应该行得通。只是不要在变量的值中包含引号,而是使用它们来包装赋值

在字符串可能包含更多问题字符的情况下,这是一个更安全的版本

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "addtext=text to add includes spaces, > redirections & more problems !"

    (for %%a in ("%addtext%") do for /f "delims=" %%l in (file.txt) do (
        echo %%l %%~a
    )) >> tmpfile.txt 
  • 值中不包含引号,但会包装赋值
  • 为防止访问变量时出现问题,该变量用引号括起来,存储在可替换参数(
    %%a
    )的
    中,并在请求时回显,不带引号(
    %%~a
  • 为了获得更好的性能(也应在第一个代码中使用),而不是为每行打开/写入/关闭输出文件(为每个
    echo
    重定向),为完整的
    for
    命令处理重定向
  • 这应该行得通。只是不要在变量的值中包含引号,而是使用它们来包装赋值

    在字符串可能包含更多问题字符的情况下,这是一个更安全的版本

    @echo off
        setlocal enableextensions disabledelayedexpansion
        set "addtext=text to add includes spaces, > redirections & more problems !"
    
        (for %%a in ("%addtext%") do for /f "delims=" %%l in (file.txt) do (
            echo %%l %%~a
        )) >> tmpfile.txt 
    
  • 值中不包含引号,但会包装赋值
  • 为防止访问变量时出现问题,该变量用引号括起来,存储在可替换参数(
    %%a
    )的
    中,并在请求时回显,不带引号(
    %%~a
  • 为了获得更好的性能(也应在第一个代码中使用),而不是为每行打开/写入/关闭输出文件(为每个
    echo
    重定向),为完整的
    for
    命令处理重定向
  • 这应该行得通。只是不要在变量的值中包含引号,而是使用它们来包装赋值

    在字符串可能包含更多问题字符的情况下,这是一个更安全的版本

    @echo off
        setlocal enableextensions disabledelayedexpansion
        set "addtext=text to add includes spaces, > redirections & more problems !"
    
        (for %%a in ("%addtext%") do for /f "delims=" %%l in (file.txt) do (
            echo %%l %%~a
        )) >> tmpfile.txt 
    
  • 值中不包含引号,但会包装赋值
  • 为防止访问变量时出现问题,该变量用引号括起来,存储在可替换参数(
    %%a
    )的
    中,并在请求时回显,不带引号(
    %%~a
  • 为了获得更好的性能(也应在第一个代码中使用),而不是为每行打开/写入/关闭输出文件(为每个
    echo
    重定向),为完整的
    for
    命令处理重定向
  • 这应该行得通。只是不要在变量的值中包含引号,而是使用它们来包装赋值

    在字符串可能包含更多问题字符的情况下,这是一个更安全的版本

    @echo off
        setlocal enableextensions disabledelayedexpansion
        set "addtext=text to add includes spaces, > redirections & more problems !"
    
        (for %%a in ("%addtext%") do for /f "delims=" %%l in (file.txt) do (
            echo %%l %%~a
        )) >> tmpfile.txt 
    
  • 值中不包含引号,但会包装赋值
  • 为防止访问变量时出现问题,该变量用引号括起来,存储在可替换参数(
    %%a
    )的
    中,并在请求时回显,不带引号(
    %%~a
  • 为了获得更好的性能(也应在第一个代码中使用),而不是为每行打开/写入/关闭输出文件(为每个
    echo
    重定向),为完整的
    for
    命令处理重定向

  • @jeb,我已经复制并粘贴了答案中的代码(已禁用延迟扩展),它可以正常工作。要使它像您所指出的那样工作,需要在变量定义上转义感叹号,这是我不想做的。并且,在启用延迟扩展的情况下,如果源文件包含
    在它的数据中,输出将是错误的。你是对的,我读了
    启用延迟扩展
    ,但你写了
    启用扩展
    。@jeb,我已经复制并粘贴了答案中的代码(已禁用延迟扩展),它可以工作。要使它像您所指出的那样工作,需要在变量定义上转义感叹号,这是我不想做的。并且,在启用延迟扩展的情况下,如果源文件包含
    在它的数据中,输出将是错误的。你是对的,我读了
    启用延迟扩展
    ,但你写了
    启用扩展
    。@jeb,我已经复制并粘贴了答案中的代码(已禁用延迟扩展),它可以工作。要使它像您所指出的那样工作,需要在变量定义上转义感叹号,这是我不想做的。并且,在启用延迟扩展的情况下,如果源文件包含
    在它的数据中,输出将是错误的。你是对的,我读了
    启用延迟扩展
    ,但你写了
    启用扩展
    。@jeb,我已经复制并粘贴了答案中的代码(已禁用延迟扩展),它可以工作。要使它像您所指出的那样工作,需要在变量定义上转义感叹号,这是我不想做的。并且,在启用延迟扩展的情况下,如果源文件包含
    在其数据中,输出将是错误的。您是对的,我读了
    enabledayedexpansion
    ,但您写了
    enabledextension
    。。。