Página 1 de 1
apagar arquivo Pasta abaixo
Enviado: 16 Abr 2013 23:07
por Alexandre Silva
olá//
Uma coisa basica, esta me fazendo perder tempo..
tenho um aplicativo que roda numa pasta Le e processa um TXT que fica numa pasta abaixo, ao final fecho o arquivo e dou comando erase, mas na consigo apaga-lo
Exemplo
C:\sistema pasta onde roda o aplicativo
C:\sistema\placas ( tem os txt)
1-Nao tem atributo de só leitura nos txt
2-Nao tem nome longo nas pastas
3-tentei com erase e ferase.
4-Cheguei a colocar o caminho completo com drive e tudo, em vez de ".\placas\arq.txt"
apagar arquivo Pasta abaixo
Enviado: 17 Abr 2013 04:59
por Pablo César
Sem o código não dá pra saber... mas com certeza você deveria dar o caminho completo, principalmente se o arquivo não estiver na pasta corrente...
apagar arquivo Pasta abaixo
Enviado: 17 Abr 2013 09:42
por Duda 'Sgluber'
Alexandre,
eu faria um teste a mais: usaria o RUN pra rodar diretamente o DEL do DOS.
Ainda, usaria o próprio RUN pra mudar de pasta antes de comandar a exclusão do arquivo.
apagar arquivo Pasta abaixo
Enviado: 17 Abr 2013 16:39
por sambomb
Roda no DOS
del "..\Arquivo.extensao"
apagar arquivo Pasta abaixo
Enviado: 17 Abr 2013 17:12
por alxsts
Olá!
Isso é DOS puro...
Se você tem uma pasta "C:\Sistema" e dentro dela outra chamada "Placas", estando posicionado em "C:\Sistema", para referenciar um arquivo na subpasta desta é só escrever Placas/Arquivo.Txt.
Código: Selecionar todos
Function Main()
LOCAL nRet
IF ( nRet := FERASE("placas/Arquivo.Txt") ) == -1
? "File erase error:", FERROR()
BREAK
ELSE
? "File deleted..."
ENDIF
Return nRet
Edit: desculpem, o correto é usar a barra invertida. placas\Arquivo.Txt
apagar arquivo Pasta abaixo
Enviado: 17 Abr 2013 21:04
por rochinha
Amiguinho,
Use minhas soluções:
Código: Selecionar todos
FUNCTION F_ERASE( ARQUIVOS, CAMINHO )
DEFAULT CAMINHO := "."
CONTADOR := ADIR( ARQUIVOS )
IF CONTADOR != 0
DECLARE TXT_NOMES[ CONTADOR ]
ADIR( ARQUIVOS, TXT_NOMES )
FOR CONTADOR := 1 TO LEN( TXT_NOMES )
FERASE( CAMINHO + "\" + TXT_NOMES[CONTADOR] )
NEXT
ENDIF
RETURN .F.
Exemplo:
F_Erase( "*.TXT", "\pasta" )
Código: Selecionar todos
FUNCTION F_COPY( ARQUIVOS, DESTINO )
CONTADOR := ADIR( ARQUIVOS )
IF CONTADOR != 0
DECLARE TXT_NOMES[ CONTADOR ]
ADIR( ARQUIVOS, TXT_NOMES )
FOR CONTADOR := 1 TO LEN( TXT_NOMES )
__COPYFILE( TXT_NOMES[CONTADOR], DESTINO )
NEXT
ENDIF
RETURN .F.
Exemplo:
F_Copy( "\pasta\*.TXT", "C:\temp" )
apagar arquivo Pasta abaixo
Enviado: 18 Abr 2013 00:44
por Vander
Tente assim:
AEVAL(DIRECTORY("C:\sistema\placas\*.TXT"),{|aFile| FErase("C:\sistema\placas\"+aFile[1])})
vander
apagar arquivo Pasta abaixo
Enviado: 18 Abr 2013 11:57
por Alexandre Silva
Obrigado a todos, como vimos tem varias formas de apagar..
o que aconteceu foi o seguinte
na rotina de leiura uso a funcao abaixo:
Código: Selecionar todos
*-----------------------------
function fazappend(varq)
local cSetEOL:=SET(_SET_EOL),nHandle,cBuff,npos,crlf:=chr(13)+chr(10)
nHandle := FOpen(varq,0)
if nHandle # -1
cBuff:=SPACE(6000)
nPos:=FSEEK(nHandle,0,1)
IF ( nRead:=FREAD(nHandle,@cBuff,6000) ) > 0
IF ( nEol:=AT(CRLF,SUBSTR(cBuff,1,nRead)) ) == 0
SET(_SET_EOL,CHR(10)) // considera apenas o chr(10)
ENDI
ELSE
SET(_SET_EOL,chr(13)+CHR(10)) // dai poe
ENDIF
endif
APPEND FROM &(VARQ) SDF
SET(_SET_EOL,cSetEOL) // volta ao padrao
FCLOSE(nHandle) // <=
retu
Onde o arquivo é aberto com Fopen() eu nao estava fechando, com fclose()
isso passava no HB 2.1, como nao estava fechado nao conseguia apagar,
Com os testes, usando o DEL, vi a mensagem arquivo esta sendo usado..
Agora, colocando o FCLOSE(), apago com simples erase , sem precisar o caminho completo inclusive..
VALEU !