在批处理文件中使用ECHO将“”传递到文件中

时间:2013-12-20 08:04:58

标签: batch-file echo

我希望在我的文件中包含以下字符串。

#define Test "c:drive\folder\test1.txt"

在这里,我基本上把这个文件夹中的* .txt文件(文件名一直在变化)。

我使用以下代码:

DEL Listfile.txt
echo | set /p="#define Test "c:drive\folder\""> Listfile.txt
dir /B *.txt >> Listfile.txt

然而,问题是文件名test1.txt是在"之后,例如

#define Test "c:drive\folder\"test1.txt

我找不到另一种方法来结束在"

之间包含文件名

2 个答案:

答案 0 :(得分:1)

试试这个:

@echo off
DEL Listfile.txt
set char="
for /F "delims==" %%d in ('dir /B *.txt') DO ( 
    echo | Set /P="#define Test %char%c:drive\folder\%%d%char%">>Listfile.txt
    echo.>>Listfile.txt
)

答案 1 :(得分:0)

GOTO 0和payeli的答案的混合。

del Listfile.txt
for /F "delims=" %%d in ('dir /B *.txt') DO (
     > Listfile.txt echo #define Test "c:drive\folder\%%d"
)

这里有必要使用FOR / F循环,就像在另一种情况下(GOTO 0的解决方案)一样,FOR循环在第一行被回显之后也可能找到Listfile.txt
FOR / F将起作用,因为它在DO部分执行之前首先读取dir命令的完整输出。

但现在可以只使用一个回声一次输出完整的行。

如果C:\drive\folder\也是文本文件的绝对路径,则可以将回显线更改为:

> Listfile.txt echo  #define Test "%%~fd"