如何使批处理文件创建另一个包含代码的批处理文件

时间:2017-03-11 21:20:17

标签: batch-file

我制作了这个批处理文件,然后我想用批处理制作一个安装程序,但后来我不得不制作包含代码部分的批处理文件。

我试过用这个:

cat > %drev%:\Notekeeper\Program.bat << EOF
script script script
script script script
EOF

然后我意识到我需要在每一行之前添加回声。当你有300多行代码时,这就是一个问题...

那么,在我不必在所有事情之前添加echo的情况下,有更简单的方法吗?

2 个答案:

答案 0 :(得分:3)

这是一种方法:

git ls-remote

可以对此代码进行多项修改,例如:

  • 将代码部分放在其他位置(不在此文件的末尾)。
  • 不止一段代码。
  • 在复制代码时展开一些%变量%。
  • 等等......

注意:在其他类型的文件中包含代码是在名为@echo off setlocal rem Get the number of the "<resource>" line for /F "delims=:" %%a in ('findstr /N "<resource>" "%~F0"') do set "start=%%a" rem Skip such number of lines and show the rest of this file (for /F "usebackq skip=%start% delims=" %%a in ("%~F0") do echo %%a) > Program.bat goto :EOF <resource> script script script script script script 的部分中管理的,所以我只使用了相同的术语。

答案 1 :(得分:1)

@echo off & setlocal enabledelayedexpansion
(
scriptA
scriptB
)2>>fileA.txt:stream1

for /f %%p in (fileA.txt:stream1) do (
    set a=%%p
    set a=!a:'=!
        echo !a!>> fileA.txt
)

上面的脚本将执行:

  • scriptA .....重定向到fileA.txt的stream1(你看不到)
  • 由于fileA.txt的stream1将填充:

      

    'scriptA'不是一个被重新命名的.....

  • for循环将删除不需要的文本并将其重定向到 正确的fileA.txt

这是另一种方式,但只会缩短>>"file.txt",而不是echo

(
echo script
echo script
echo script
)>>"file.txt"

取自this Stack Overflow question

修改

正如@Aacini评论的那样,需要转义特殊字符。