script em lote com FOR não funciona

Preciso de ajuda com o meu script abaixo:

Ele não continua para a próxima linha de machine.txt Se eu colocar o ")" depois de "echo! Machine", ele mostra as máquinas dentro do machine.txt, portanto, funciona!

Mas quando o ")" está no final do script, ele não continua e sai ..

@echo off
set server=\\server01\share

dir /b /o %server% |find "i32" |more +2 > 32.txt
FOR /F "tokens=*" %%A in (32.txt) do SET file32=%%A

dir /b /o %server% |find "i64" |more +2 > 64.txt
FOR /F "tokens=*" %%B in (64.txt) do SET file64=%%B

setlocal EnableDelayedExpansion

for /f "tokens=*" %%C in (machines.txt) do (
  set "machine=%%C"
  echo !machine!
  if exist "\\!machine!\c$\Program Files (x86)" goto 64bits
  goto goo

  :goo
  if exist "\\!machine!\c$\Arquivos de Programas (x86)" goto 64bits
  goto 32bits

  :64bits
  xcopy /D /Y /F /C %server%\%file64% \\!machine!\c$\
  PsExec.exe -d \\!machine! "C:\%file64%" /q
  goto end

  :32bits
  xcopy /D /Y /F /C %server%\%file32% \\!machine!\c$\
  PsExec.exe -d \\!machine! "C:\%file32%" /q
  goto end

  :end
  echo Finished !micro!
)
pause

Qualquer ideia? Obrigado!