Ir para conteúdo

POWERED BY:

Arquivado

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

[ GuTo ]

Renomear pasta e arquivo com FSO

Recommended Posts

Fala pessoal,

 

Vocês sabem se há como renomear uma:

 

- pasta

- arquivo

 

usando FSO?

 

Já vi diversos métodos, mas este de renomear, nunca vi; Ou se vi, não lembro aonde e quando.

 

Se alguém souber e puder responder, fico grato.

 

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

neste topico tem referencias sobre FSO

 

http://www.imasters.com.br/forum/index.php...=0entry281440

Compartilhar este post


Link para o post
Compartilhar em outros sites

Querido, a um tempo atrás eu fiz isso. Acredito que vai te ajudar.

 

1.asp

 

ASP

[*]<HTML>

 

[*]<HEAD>

 

[*]<TITLE> 21 dias - paginas 371 </TITLE>

 

[*]

 

[*]</HEAD>

 

[*]

 

[*]<BODY>

 

[*]

 

[*]<% dim objFSO, objfile

 

[*]set objfso server.createobject("scripting.filesystemobject")

 

[*]

 

[*]if not objfso.fileexists(server.mappath("log.txt")) then

 

[*]response.write "arquivo não existe"

 

[*]else

 

[*]

 

[*]set objfile objfso.getfile(server.mappath("log.txt"))

 

[*]

 

[*]response.write "quando ele foi criado"

 

[*]response.write objfile.datecreated

 

[*]response.write "quando ele foi criado"

 

[*]response.write "<br>"

 

[*]response.write "ultimo acesso"

 

[*]response.write objfile.datelastaccessed

 

[*]response.write "<br>"

 

[*]response.write "ultima modificação"

 

[*]response.write objfile.datelastmodified

 

[*]response.write "<br>"

 

[*]response.write "verifica o drive"

 

[*]response.write objfile.drive

 

[*]response.write "<br>"

 

[*]response.write "verifica a pasta "

 

[*]response.write objfile.parentfolder.name

 

[*]response.write "<br>"

 

[*]response.write "path é "

 

[*]response.write objfile.path

 

[*]response.write "<br>"

 

[*]response.write "o outro path é "

 

[*]response.write objfile.shortpath

 

[*]response.write "<br>"

 

[*]response.write "caminho longo "

 

[*]response.write objfile.shortname

 

[*]response.write "<br>"

 

[*]response.write "tamanho do arquivo"

 

[*]response.write objfile.size

 

[*]response.write " bytes <br>"

 

[*]response.write "tipo do arquivo"

 

[*]response.write objfile.type

 

[*]response.write "<br>"

 

[*]set objfile = nothing

 

[*]end if

 

[*]set objfso = nothing

 

[*]%>

 

[*]

 

[*]</BODY>

 

[*]</HTML>

 

 

Agora você pode editar

 

2.asp

 

ASP

[*]<HTML>

 

[*]<HEAD>

 

[*]<TITLE> 21 dias - paginas 385 </TITLE>

 

[*]

 

[*]</HEAD>

 

[*]

 

[*]<BODY>

 

[*]

 

[*]<% 

 

[*]const forwriting = 2 

 

[*]dim objFSO, objopenfile, objpath

 

[*]strpath server.mappath("log.txt")

 

[*]set objFSO server.createobject("scripting.filesystemobject")

 

[*]if objfso.fileexists(strpath) then 

 

[*]set objopenfile objFSO.opentextfile(strpath, forwriting)

 

[*]objopenfile.write("abcde")

 

[*]objopenfile.writeline("fgh") ' writeline que dizer oque vem abaixo é pra pular de linha

 

[*]objopenfile.write("ijklm") ' oque vem abaixo de writeline é em linha separada

 

[*]objopenfile.writeblanklines("5") ' espaços de quebra de linhas

 

[*]objopenfile.write("nopq")

 

[*]objopenfile.writeline

 

[*]objopenfile.write("rstuv")

 

[*]objopenfile.close

 

[*]set objopenfile = nothing 

 

[*]end if 

 

[*]set objFSO = nothing

 

[*]%>

 

[*]

 

[*]</BODY>

 

[*]</HTML>

 

 

 

3.asp

 

ASP

[*]<HTML>

 

[*]<HEAD>

 

[*]<TITLE> 21 dias - paginas 374 </TITLE>

 

[*]

 

[*]</HEAD>

 

[*]

 

[*]<BODY>

 

[*]

 

[*]<% dim objFSO, objfile, objfolder

 

[*]set objfso server.createobject("scripting.filesystemobject")

 

[*]set objfolder objfso.getfolder(server.mappath("douglas"))

 

[*]

 

[*]response.write " arquivos dentro da pasta "

 

[*]response.write objfolder.path & "<p>"

 

[*]for each objfile in objfolder.files

 

[*]response.write objfile.name & "<br>"

 

[*]next

 

[*]

 

[*]set objfolder = nothing

 

[*]set objfso = nothing

 

[*]%>

 

[*]

 

[*]<a href="2.asp?url=<%=request.servervariables("url")%>">Asp Mania</a>

 

[*]</BODY>

 

[*]</HTML>

 

 

4.asp

 

 

ASP

[*]<HTML>

 

[*]<HEAD>

 

[*]<TITLE> 21 dias - paginas 383 </TITLE>

 

[*]

 

[*]</HEAD>

 

[*]

 

[*]<BODY>

 

[*]

 

[*]<% 

 

[*]const forreading = 1

 

[*]

 

[*]dim objFSO, objopenfile, objpath, strtext

 

[*]

 

[*]strpath request.querystring("url")

 

[*]strpath server.mappath(strpath)

 

[*]set objFSO server.createobject("scripting.filesystemobject")

 

[*]set objopenfile objFSO.opentextfile(strpath, forreading)

 

[*]response.write "<pre>"

 

[*]do while not objopenfile.atendofstream

 

[*]strtext objopenfile.readline

 

[*]'strtext objopenfile.readall retorna o arquivo como ele é original 

 

[*]response.write server.htmlencode(strtext)

 

[*]response.write "<br>"

 

[*]loop

 

[*]objopenfile.close

 

[*]set objopenfile = nothing 

 

[*]set objFSO = nothing

 

[*]response.write "</pre>"

 

[*]%>

 

[*]

 

[*]</BODY>

 

[*]</HTML>

 

 

O objeto File System Object fornece acesso ao sistema de arquivos do computador, permitindo que possamos manipular os arquivos de texto, pastas e drives de dentro do nosso código. Esta disponivel em VBScript e JavaScript para uso em páginas ASP no servidor. Ele também pode ser usado no cliente do Internet Explorer 5, desde que as páginas tenham a extensão do arquivo (.hta), para indicar que elas são parte de uma Hypertext Application. Nesta matéria veremos apenas como usar o FSO no script de ASP no servidor.

 

A linha abaixo mostra como criar uma instância do objeto FileSystemObject.

Dim oFSO

Set oFSO = Server.CreateObject("Scripting.FileSystemObject")

 

Após criado a instãncia do objeto, vamos agora analisar alguns de seus métodos:

 

FolderExists(X)

Retorna True se a pasta especificada em X esistir ou False se não existir. O parâmetro X pode ser um caminho relativo ou absoluto para a pasta.

 

CreateFolder(X)

Cria uma nova pasta que tem o caminho especificado em X. Caso esta pasta já exista, um erro será retornado.

 

DeleteFolder(X, force)

Deleta a pasta ou pastas especificadas em X. Se o parametro force estiver definido como true, ele deleta as pastas mesmo sendo elas ready-only.

 

MoveFolder(X, Y)

Move a pasta ou pastas especificadas em X para a pasta especificada em Y.

 

FileExists(X)

Retorna True se o arquivo especificada em X esistir ou False se não existir.

 

CreateTextFile(X,Y)

Cria um novo arquivo de texto no disco com o nome especificado em X. Se o parâmetro Y estiver definido em TRUE, mesmo existindo o arquivo ele será sobrescrito.

 

DeleteFile(X, force)

Deleta o arquivo ou arquivos especificadas em X. Se o parametro force estiver definido como true, ele deleta os arquivos mesmo sendo eles ready-only.

 

OpenTextFile(X,IO)

Cria um novo arquivo de texto especificado em X ou abre o mesmo se ele existir. O parâmetro IO define o tipo de acesso solicitado sendo permitido conforme abaixo:

1 - ForReading (padrão)

2 - ForWriting

8 - ForAppending

 

 

 

 

 

Abraços.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Putz, desculpe a fraqueza, mas pô, o resto eu sei né.Eu quero saber se TEM COMO RENOMEAR UM ARQUIVO OU UMA PASTA com FSO.Se alguém souber, diga aí.

Compartilhar este post


Link para o post
Compartilhar em outros sites

amigo nos links que te passei tem exemplos prontos disso...se quiser caço o link direto pra você...

Compartilhar este post


Link para o post
Compartilhar em outros sites

ta aqui tiozinho

 

renomear arquivo

http://www.sloppycode.net/Reference/FSO/Ref-116.html

 

renomear pasta

http://www.sloppycode.net/Reference/FSO/Ref-134.html

 

muito bom este material de uma olhada com calma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá eu estou fazendo desta forma....<%@LANGUAGE="VBSCRIPT"%><% '-- Cria Objeto UploadSet upl = Server.CreateObject("SoftArtisans.FileUp")Set ObjFso = Server.CreateObject("Scripting.FileSystemObject")Name1 = lcase(upl.Form("Name1"))Acao = trim(upl.Form("acao"))%><%'-- Upload das Fotosupl.Path = "coloque o caminho"If upl.Form("File1").ContentType = "image/pjpeg" Then ' Foto01 = upl.form("File1").ShortFilename Foto01 = Name1 & ".jpg"' upl.Form("File1").Save upl.Form("File1").SaveAs Foto01 Response.Redirect("institucionais_sucesso1.asp")elseResponse.Redirect("erro.asp")End IfIf Err Then Response.Write("<b>Erro : </b>" & Err.description & "<br>") Set upl = nothing Response.EndEnd If%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

A propriedade "Name" é Read/Write, portanto, basta alterar.

NovoNome = "meuarquivo.xls"ObjFso = Server.CreateObject("Scirpting.FileSystemObject")Set oFile = ObjFso.getFile("C:\nomeDoarquivo.xls")oFile.Name = NovoNome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Puxa vida, mas que beleza hein!Viu? Às vezes vejo que uns tutos me fizeram falta...Agora pretendo criar uma função, recursiva, que renomeia tudo que é arquivo e pasta que tenha caracteres maiuscúlos.Motivo?Quando formatei meu pc, fiz o backup, e tudo q é pasta ficou com a letra inicial maiscula, e eu prefiro tudo em lowercase :D Valeu mesmo pessoal, por essa SIMPLES solução eu não esperava.Read/Write.. essa é boa ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal,

 

Dêem um look no código que fiz.

 

Função recursiva, que chama ela mesmo, e vai executando ações dentro de todas as pastas contidas dentro dela e dos arquivos da mesma.

 

Porém, pra lista é uma beleza.

Mas na hora de RENOMEAR, dá pau.

 

Dêem um look no código:

ASP

[*]<%

 

[*]Option Explicit

 

[*]%><?xml version="1.0" encoding="iso-8859-1"?>

 

[*]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

[*]<html xmlns="http://www.w3.org/1999/xhtml">

 

[*]<head>

 

[*]<title>Rename files and folders - recursive function</title>

 

[*]<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

 

[*]<style media="all" type="text/css">

 

[*]<!--

 

[*]body { font: 11px verdana; }

 

[*]-->

 

[*]</style>

 

[*]</head>

 

[*]

 

[*]<body>

 

[*]

 

[*]<%

 

[*]Function Recursive(strPathFolder)

 

[*] dim objFSO, objPasta, objArquivo, pasta, arquivo

 

[*]

 

[*] Set objFSO Server.CreateObject("Scripting.FileSystemObject")

 

[*] set objPasta objFSO.GetFolder(strPathFolder)

 

[*] objPasta.Name LCase(objPasta.Name)

 

[*] 'Response.Write(LCase(objPasta.Name) & "<br />")

 

[*] For Each pasta in objPasta.SubFolders

 

[*] 'Response.Write(LCase(pasta.Name) & "<br />")

 

[*] 'Response.Write(LCase(pasta.Path) & "<br />")

 

[*] 'pasta.Name LCase(pasta.Name)

 

[*] Recursive(pasta.Path)

 

[*] Next

 

[*] 'Response.End()

 

[*]

 

[*] 'set objArquivo objFSO.GetFolder(strPathFolder)

 

[*] For Each arquivo in objPasta.Files

 

[*] 'Response.Write(LCase(arquivo.Name) & "<br />")

 

[*] 'Response.Write(LCase(arquivo.Path) & "<br />")

 

[*] arquivo.Name LCase(arquivo.Name)

 

[*] 'Recursive(arquivo.Path)

 

[*] Next

 

[*] 'set objArquivo = nothing

 

[*] 'set objPasta = nothing

 

[*] 'Set objFSO = nothing

 

[*]

 

[*]End Function

 

[*]

 

[*]dim strInitialFolder

 

[*]strInitialFolder Server.MapPath(".")

 

[*]'Response.Write(strInitialFolder)

 

[*]'Response.End()

 

[*]Recursive(strInitialFolder)

 

[*]%>

 

[*]

 

[*]</body>

 

[*]</html>

 

o erro q retorna:

Objeto Server error 'ASP 0177 : 800a003a'

 

Falha em Server.CreateObject

 

/rename_recursive.asp, line 32

 

00000000

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aparentemente seu FSo ta belezinhaaaaaaa.

 

to achando que é permissão do Server!

 

Mais tem um esqueminha assim:

 

Renomear Pasta:

 

ASP

[*]<%

 

[*]Set FSO Server.CreateObject("Scripting.FileSystemObject")

 

[*]FSo.MoveFolder "c:\temp""c:\tempNOVA"

 

[*]Set FSO = Nothing

 

[*]%>

 

-------------------------------------------------------------------

Renomear Arquivo:

 

ASP

[*]<%

 

[*]Set FSO Server.CreateObject("Scripting.FileSystemObject")

 

[*]FSO.MoveFile "c:\boot.ini""c:\boot.old"

 

[*]Set FSO = Nothing

 

[*]%>

 

Falo!!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa solução tbm brother!Eu percebi e entendi qual era o meu "erro".Eu não posso apenas passar pra LOWERCASE o nome da pasta ou do arquivo, eu preciso realmente RENOMEA-LO. Não posso renomar com mesmo nome, q dá arquivo já existente :blink: Ok, a alternativa que encontrei é colocar depois do nome do arquivo/pasta alguma coisa padrao.objPasta.Name = LCase(objPasta.Name) & "_temp"Dae depois você efetuar a mesma operacao, só que tirando este "_temp" do final.Daí encontrei tbm mais um problema.No loop, quando você renomeia, é como se fosse criado um novo arquivo no diretório, dae o FSO vai renomear ele denovo :P Daí você tem q fazer um tratamento pra isso tbm.Mas funfou legal.Agora já posso até responder dúvidas quanto à isso tudo. :P Obrigado pela força.Até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

PARABENS CARA!!!!!!!!!!

 

Tava pensando aqui! você poderia usar um INPUT para renomear, ai você renomea o que está la Por o que você digitou. Tipo Assim:

 

ASP

[*]<%

 

[*]VarRenomeia Request.Form("renomea")

 

[*]

 

[*]Set FSO Server.CreateObject("Scripting.FileSystemObject")

 

[*]

 

[*]FSo.MoveFolder "c:\temp""c:\"&VarRenomeia

 

[*]

 

[*]Set FSO = Nothing

 

[*]

 

[*]%>

 

Eu acho que funfa cara! fui pela LÓGICA!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa solução tbm brother!

 

Eu percebi e entendi qual era o meu "erro".

Eu não posso apenas passar pra LOWERCASE o nome da pasta ou do arquivo, eu preciso realmente RENOMEA-LO. Não posso renomar com mesmo nome, q dá arquivo já existente :blink:

Ok, a alternativa que encontrei é colocar depois do nome do arquivo/pasta alguma coisa padrao.

 

objPasta.Name = LCase(objPasta.Name) & "_temp"

 

Dae depois você efetuar a mesma operacao, só que tirando este "_temp" do final.

 

Daí encontrei tbm mais um problema.

 

No loop, quando você renomeia, é como se fosse criado um novo arquivo no diretório, dae o FSO vai renomear ele denovo :P

Daí você tem q fazer um tratamento pra isso tbm.

 

Mas funfou legal.

 

Agora já posso até responder dúvidas quanto à isso tudo. :P

 

Obrigado pela força.

 

Até mais

muito bom seu code guto

 

e o blema era esse mesmo você renomear para o mesmo nome...

 

parabens cara http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Marcelo Barcellos, marioufpa, DouGuara, Rspina e explore.

 

Quando chegar em casa hoje, eu posto a função versão final que fiz.

 

Ficou bem boa!

 

Vocês podem depois mudar algum detalhe nela, e fazer ela ter algum outro objetivo/função.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Marcelo Barcellos, marioufpa, DouGuara, Rspina e explore.

 

Quando chegar em casa hoje, eu posto a função versão final que fiz.

 

Ficou bem boa!

 

Vocês podem depois mudar algum detalhe nela, e fazer ela ter algum outro objetivo/função.

 

Abraços!

Guto.. uma ideia pra que sua função faça exatamente o que quer, sem precisar de colocar _Temp no final de cada arquivo.

 

Já pensou em renomear Ex.: "TESTE.TXT" para "TESTE_1.TXT" depois deixar o novo nome em CaseSensitive (teste_1.txt) porém aí você pode renomear "teste_1.txt" para "teste.txt".

 

é um processo que utiliza duas vezes o processo de renomear .. porém assim você sabe que o arquivo q você renomeou é exatamente o que você quer em LowerCase menos a parte "_1" da string. Assim você não viola nenhuma regra .. está renomeando pra nomes diferentes.

 

 

Espero ter ajudado!

 

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito trabalho brow, a minha faz a mesma coisa, com algumas condições que expliquei e não precisa renomear duas vezes.Quando der eu volto aqui e posto a ultima versão dela.

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.