Verdade Macs, veja esse exemplo por exemplo:

O que funciona "Redondo" no xHarbour, no HARBOUR necas de pitibiribas. Compilador Metido a besta. Coisa de So Paulino, P!! kkkkkkkkkkk

Tente com este .BAT que eu criei, funciona de boas, igual  no xHarbour:

https://mega.nz/file/II9GTBLZ#h4aAe8VgDqbICFsLRu8lXI5xLH-YbTq3Z3ekImYvOFg

[code]
STATIC Function GetFolderToZip() // -> PBACKUP.PRG

   // Original - Mudei em: 11/04/2020 - Joao
   LOCAL cPathFiles := StrCapFirst( cFilePath( GetModuleFileName( GetInstance() ) ) )
   //LOCAL cFolder    := cGetDir( "Selecionar a Pasta de Origem", cPathFiles )
   LOCAL lLoadFiles := 0
   LOCAL cTitle, cPath, cCarpOrigem, cPathDest, cFolder

   cPath := GETCURDIR()

   cTitle    := "Selecione a Pasta de Origem Para Backup."
   cCarpOrigem := "Selecione a Pasta Onde Copiar as Novidades."

   #IFDEF __XHARBOUR__  // Modificado em: 11/04/2020 - Joao

      // if xHarbour - Funciona PERFEITO em HARBOUR explode em erros.

      cFolder := cGetDir( cTitle, cPath,, cCarpOrigem,                   ;
                          BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN + ;
                          BIF_USENEWUI + BIF_NONEWFOLDERBUTTON )

   #ELSE

      // if harbour
      cFolder    := cGetDir( "Selecionar a Pasta de Origem", cPathFiles )


   #ENDIF

   IF .NOT. Empty( cFolder )

      aSize( aFilesToZip, 0 )

      cSourceZip := RTrim( cFolder ) + "\"
      oSourceZip:Refresh()

      MsgRun( "Lendo arquivos e pastas", ;
               "Espere por Favor",       ;
               { || lLoadFiles := GetFilesToZip( cSourceZip ) } )

      IF lLoadFiles == 1

         MsgAlert( "No h arquivos para fazer a cpia" +CRLF+     ;
                   "de segurana na pasta selecionada."+CRLF+CRLF+ ;
                   "Pressione o boto Aceitar para continuar..." )

      ENDIF

      IF lLoadFiles == 2

         MsgStop( "O tamanho dos arquivos excede o limite de" +CRLF+;
                  "Capacidade de 2 GB em arquivos compactados."+CRLF+CRLF+;
                  "O backup no pode ser criado."+CRLF+CRLF+;
                  "Pressione o boto Aceitar para continuar.. " )

      ENDIF

   ENDIF

   IF Empty( cFolder ) .OR. lLoadFiles != 0

      aSize( aFilesToZip, 0 )

      cSourceZip := ""

      nSizeFiles := 0.000

      oSourceZip:Refresh()

   ENDIF

   oGrid:GoTop()
   oGrid:Refresh()

Return NIL
[/code]

Abs