Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jow Xavier

com ler um diretório q contém um endereço ip

Recommended Posts

Bom dia, galera como faço para ler um diretório q tenha um endereço ip ou seja ...

 

preciso ler isso ..

 

strPath = "//192.1.1.1/Pasta/arquivo"

' Vamos criar aqui o FileSystemObject:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' ler o conteúdo do diretório
Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))

For Each objItem In objFolder.Files
	nome_arquivo = objItem.Name
	

	arquivo = server.mappath(".") & "\arquivo\" & nome_arquivo

Apresenta esse erro ::

 

Server.MapPath() erro 'ASP 0174 : 80004005'

Caractere(s) de Caminho Inválido(s)

/controle/at_carga/index.asp, line 24

Um '/' ou '\'inválido foi encontrado no parâmetro Path do método MapPath.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não sei se funciona, mas tentou assim:

 

strPath = "\\192.1.1.1\Pasta\arquivo"

Set objFolder = objFSO.GetFolder(strPath)

 

sendo que a a pasta deve ter permissão de segurança e compartilhamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara funcionou, eu tinha feito quase igual você fez, a única difereça era q eu tinha invertido as barras ... Valeu resolveu o problema ...

 

 

Uma outra dúvida refernte a leitura do diretório ...

 

Eu já consigo ler o diretório e gravar o nome do arquivo e as linhas lidas no banco de dados, mas acontece q sempre lê o diretório,

eu preciso q ñ leia o q já está no banco de dados, ou seja quero q leia e grave o q ñ existe no banco ... estou fazendo da seguinte forma ...

 

 

'nome_arquivo é o arquivo lido

Set rsHora = conn.execute("SELECT * FROM BATIDAS_ WHERE NOME_ARQUIVO = '" & nome_arquivo & "' ")
	if not rsHora.eof then
		msg = "Não há registros a serem atualizados."
	else
	   lê o arquivo e salva no banco
	   end if
reponse.write msg

Como posso resolver isso ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

seria a mesma lógica abaixo, onde neste caso, você^verifica se existe o login cadastrado se sim redireciona para outra page, se nao inclui

 

<% 'abrir a conexao
   call abreconexao
   'crio o rsselect para verificar se os dados jah estaun cadastrados
   set rsselect=server.createobject("ADODB.Recordset")
   'crio o SQLselect
   SQLselect="SELECT login FROM login WHERE login='"&varlogin&"'"
   rsselect.open SQLselect,conexao,1,3
   if not rsselect.eof then
   		response.redirect("incluir_form.asp?msgeof=1")
		set rsselect=nothing
   else	
   		'crio o rsinsert para inseiri os dados no bd
   		 set rsinsert=server.createobject("ADODB.Recordset")
		'crio o SQLinsert pra incluir no bd
		SQLinsert="INSERT INTO login(login,senha,email) values('"&varlogin&"','"&varsenha&"','"&varemail&"')"
		rsinsert.open SQLinsert,conexao,1,3
		response.redirect("administracao_treina.asp?msg=1")
		set rsinsert=nothing
	end if 
	call fechaconexao

Compartilhar este post


Link para o post
Compartilhar em outros sites

e que erro vem enfrentando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia tenho esse script ....

 

Set rsHora = conn.execute("SELECT * FROM BATIDAS_ WHERE NOME_ARQUIVO = '" & nome_arquivo & "' ")
	if not rsHora.eof then
		response.write "<center>"
		
		response.write "Não há registros a serem atualizados.<br>"
		response.write "<center><input type='button' value='Voltar' onClick='history.back()'></center>"
		
		response.write "</center>"
		response.end
	else
' lendo os arquivos

	  Dim array(4)
Dim strPath
Dim objFSO
Dim objFolder
Dim objItem
Dim ObjFile
Dim ObjStream
Const forReading = 1
Const forWriting = 2
Const forAppending = 8

' O diretório que vai ser listado:
strPath = "\\192.1.1.1\Pasta\Arquivos\"

' Vamos criar aqui o FileSystemObject:
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' ler o conteúdo do diretório
'Set objFolder = objFSO.GetFolder(Server.MapPath(strPath))
Set objFolder = objFSO.GetFolder(strPath)

For Each objItem In objFolder.Files
	nome_arquivo = objItem.Name
	
	'arquivo = server.mappath(".") & "\Arquivos\" & nome_arquivo
	
	arquivo = strPath & nome_arquivo
	
	'Instância o objeto FSO. 
	Set Fso = CreateObject("Scripting.FileSystemObject") 
	 
	'O método GetFile retorna o arquivo existente. 
	Set ObjFile = Fso.GetFile(arquivo) 
	 
	'O método OpenAsTextStream abre o arquivo como sendo um fluxo de texto. 
	Set objStream = ObjFile.OpenAsTextStream(forReading,false) 
	
	
	'Looping para varrer todas as linha do arquivo. 
	While Not ObjStream.AtEndOfStream 
	 
		'O método Readline lê uma linha de um arquivo 
		Linha = ObjStream.Readline  
		' Tira o espaço da Linha dos arquivos 
		Linha = replace(Linha,"	","")
		' Captura o id no arquivo
		id = (mid(Linha,1,5))
		' Captura a data no arquivo
		data = trim(mid(Linha,6,8))
		'data e hora do arquivo
		data_arquivo = objItem.DateLastModified
		'hora, minutos e segundos do arquivo
		data_ = (mid(data_arquivo,1,10))
		'hora, minutos e segundos do arquivo
		hora_arquivo = (mid(data_arquivo,11,16))
		'hora e minutos do arquivo do arquivo
		hora_min_arquivo = (mid(hora_arquivo,1,6))
		'data e hora do arquivo
		data_hora = data_ & " " & hora_min_arquivo 
		
		'data atual
		data_atual = date
		data_atual = dbDate(data_atual) &" "& time
		on error resume next		

		conn.execute ("INSERT INTO BATIDAS_ (NOME_ARQUIVO,COD_FUNCIONARIO, DATA, ID_CADASTRO) VALUES ('" &nome_arquivo& "','"&id&"','"&data_arquivo&"','0') ")
			conn.execute(SQL)
			if err <> 0 then
				msg = "Erro ao tentar salvar registro!!! - Favor avisar ao analista."
			else
				msg = "Registro salvo com sucesso."
			end if
	Wend
Next
end if

response.write msg

response.write "</center>"
'Fecha o arquivo. 
objStream.Close 

'Destruíndo objetos 
Set Fso = nothing 
Set objStream = nothing

' Feito !!! Agora é fechar as variáveis
Set objItem = Nothing
Set objFolder = Nothing
Set objFSO = Nothing

	   end if

 

e que erro vem enfrentando?

Acontece que sempre está lendo os arquivos .... A única coisa q está certo é q não cadastra se já estiver cadastrado ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa agora q eu postei o script pude perceber o erro ... estou fazendo a comparação abaixo ::

 

Set rsHora = conn.execute("SELECT * FROM BATIDAS_ WHERE NOME_ARQUIVO = '" & nome_arquivo & "' ")

está variavel está dentro do For Each, ela ainda não foi lida, simplesmente coloquei está query logo abaixo do For Each objItem In objFolder.Files e fechei o if antes do next .... e ai rolou ....

 

Mas agora fiquei com uma dúvida, o script demora um pouco para me retornar a msg "Não há registros a serem atualizados." , isso ocorre pq o script executa todo o For Each para depois retornar a msg ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso... não só o FOR EACH, mas todo o código da página. No caso acima, o Response.Write é uma das últimas linhas a ser executada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.