Olá Tainã,
Primeiramente parabéns, sua linha de pensamento foi corretíssima, o seu comando :
@echo off & cls & echo dia de hoje: & echo %date% & echo hora atual & echo %time% > data.bat
Foi quase perfeito para criar o seu script desejado, ficando faltando apenas alguns detalhes.
Como queremos imprimir cada comando desses, precisamos colocar um echo na frente de cada um deles, para que elas não sejam executado e sim impressos dentro do data.bat
echo @echo off & echo cls & echo echo dia de hoje: & echo echo %date% & echo echo hora atual & echo echo %time%
Execute em seu terminal e veja o que é exibido algo assim:
@echo off
cls
echo dia de hoje:
echo 03/10/2016
echo hora atual
echo 14:38:20,08
Mas ainda assim, as variáveis como %time% e %date% estão sendo avaliadas pelos comando echo e não são impressas. Para evitarmos isto, precisamos escapar as variáveis com o caractere ^ na frente dos % que representam as variáveis, ficando assim:
echo @echo off & echo cls & echo echo dia de hoje: & echo echo ^%date^% & echo echo hora atual & echo echo ^%time^%
Ao testar no terminal, temos:
@echo off
cls
echo dia de hoje:
echo %date%
echo hora atual
echo %time%
É o script que queremos.
Além disso, quando queremos que uma sequência de comandos que foram encadeados com o caractere & sejam salvos em um arquivo de texto, temos que envolver todo o comando com parênteses:
(echo @echo off & echo cls & echo echo dia de hoje: & echo echo ^%date^% & echo echo hora atual & echo echo ^%time^%) > data.bat
Assim, conseguiremos o data.bat
como desejado.
Você pode ver que até é possível criar arquivos.bat através do terminal, mas é bastante trabalhoso pois temos que escapar variáveis, imprimir comandos e tomar cuidado com estes detalhes. Apesar de eu achar que você fez uma boa pergunta, é melhor criarmos arquivos .bat com bloco de textos mesmo! hehe
Espero ter te ajudado,
Douglas Quintanilha