O script em lote não é executado, embora seu código seja executado no CMD

Eu estava procurando uma maneira fácil de obter as informações de volumes do sistema em GB (lote), então obtive o seguinte:

for /f "tokens=1-3" %a in ('WMIC LOGICALDISK GET FreeSpace^,Name^,Size ^|FINDSTR /I /V "Name"') do @echo wsh.echo "%b" ^& " free=" ^& FormatNumber^(cdbl^(%a^)/1024/1024/1024, 2^)^& " GiB"^& " size=" ^& FormatNumber^(cdbl^(%c^)/1024/1024/1024, 2^)^& " GiB" > %temp%\tmp.vbs & @if not "%c"=="" @echo(& @cscript //nologo %temp%\tmp.vbs >> c:\test\test2.txt | type C:\test\test2.txt

Funciona bem se eu apenas copiar e colar no CMD, mas se eu o executar a partir de um arquivo .bat, ele simplesmente não fará nada.

O que eu poderia estar fazendo de errado?

PD: Não posso usar o PowerShell, preciso em lote.

questionAnswers(1)

yourAnswerToTheQuestion