Olá!
Realmente, pelo .Bat você só conseguirá abrir o dBase...
Mas, se você tem um .DBF a ser alterado, você não precisa de um .BAT e sim um .PRG, compilado e transformado em um .EXE, que faça as tarefas que você precisa. Creio que você tenha como gerar esse executável aÃ.
Segue um exemplo mostrando as funcionalidades básicas para atingir seu objetivo. Adapte conforme a tua necessidade.
#include "Dbstruct.ch"
FUNCTION Main()
CriarTabela()
ConverterTabela()
RETURN NIL
//----------------------------------------------------------------------------------
FUNCTION CriarTabela()
// Cria uma tabela para testes
LOCAL aStru := {}
LOCAL nPos
AAdd( aStru, {"Codigo", "C", 50, 0 } )
AAdd( aStru, {"Nome", "C", 20, 0 } )
DbCreate( "Teste", aStru )
USE Teste EXCLUSIVE NEW
FOR nPos := 1 TO 100
Teste->( DbAppend() )
Teste->codigo := nPos
Teste->nome := "Nome " + LTrim( Str( nPos )
NEXT
Teste->( DbCloseArea() )
RETURN NIL
//----------------------------------------------------------------------------------
FUNCTION ConverterTabela()
LOCAL aStru := {}
LOCAL nPos
LOCAL nLen
// Abre a tabela teste e...
USE Teste EXCLUSIVE NEW
// captura seu layout
aStru := Teste->( DbStruct() )
// Quantidade de campos
nLen := Len( aStru )
// Altera o tamanho do campo "Nome" de 20 para 50 bytes
FOR nPos := 1 TO nLen
IF aStru[ nPos, F_NAME ] == "Nome"
aStru[ nPos, F_SIZE ] := 50
ENDIF
NEXT
// Acrescenta o campo "Cidade" com 20 bytes na nova estrutura
AAdd( aStru, {"Cidade", "C", 20, 0 } )
// ria uma tabela temporária com o novo layout
DbCreate( "_Teste", aStru )
// abre a tabela temporária (vazia)
USE _Teste EXCLUSIVE NEW
// importa os dados da tabela existente para a nova tabela, já no novo layout
APPEND FROM Teste
// fecha a temporária
_Teste->( DbCloseArea() )
// deleta a tabela original
Ferase( "Teste.DBF" )
// renomeia a nova tabela para o nome da original
IF FRENAME("_Teste.DBF", "Teste.DBF") == -1
Alert( "Erro ao renomear arquivo convertido (_Test.DBF)." )
ELSE
Alert( "Arquivo convertido com sucesso." )
ENDIF
RETURN NIL
//----------------------------------------------------------------------------------