如何编写正在复制的批处理?

时间:2013-11-07 09:56:38

标签: windows batch-file

我想写一个批处理文件,它在字符串中读取自己的代码,然后创建一个新的批处理文件,其中字符串作为内容并执行它。

2 个答案:

答案 0 :(得分:2)

您可以使用

阅读已启动批处理文件的内容
    type "%~f0"

因此,尝试类似

的内容
    echo off
    type "%~f0" > Test\file.bat
    Test\file.bat

但是,此脚本会不断重复(或者如果目录Test不存在则中止)。所以你需要考虑这种方法(即使用条件语句)。

答案 1 :(得分:0)

@echo off
setlocal DisableDelayedExpansion

if not exist newBatchFile.bat (

   echo First execution!

   set "batchFile="
   for /F "usebackq delims=" %%a in ("%~F0") do (
      set "line=%%a"
      setlocal EnableDelayedExpansion
      if "!line:~0,1!" equ ")" set "batchFile=!batchFile:~0,-1!"
      set "batchFile=!batchFile!!line!"
      if "!line:~-1!" neq "(" set "batchFile=!batchFile!&"
      for /F "delims=" %%b in ("!batchFile!") do endlocal & set "batchFile=%%b"
)
   setlocal EnableDelayedExpansion
   echo !batchFile:~0,-1! > newBatchFile.bat
   newBatchFile.bat

) else (

   echo Second execution!

)