none
HTA de pesquisa em diretório e execução de arquivo localizado. RRS feed

  • Pergunta

  • Ba galera, quem pode me dar uma ajuda.

    Tenho um diretório com vários arquivos pdf tche, eu gostaria de criar um HTA que tivesse um campo aonde eu poderia digitar um nome tche, e ao clicar no botão OK, ele localizasse neste diretório os arquivos pdf’s que existem com o nome digitado ou que contenham o nome em questão tche, e apresentasse o resultado na tela do HTA, com possibilidade de clicar sobre ele para que o arquivo seja aberto, alguém saberia me dizer como fazer algo assim tche.

    Obrigado galera.

    quarta-feira, 6 de novembro de 2013 18:00

Respostas

  • Bom dia Marcelo e Fabio,

    Bom eu tenho um HTA que lista diretório...

    que é baseado nesse COD...no caso ele não faz o link com o arquivo, mas acredito que der para adaptar...acho que isso ja pode dar uma luz....

    <META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES">
    <HTML>
    <HTA:Application
    Caption = yes
    border = think
    ShowInTaskBar = yes
    MaximizeButton = yes
    MinimizeButton = yes
    VERSION="v2.0"
    SCROLL="Yes"
    ICON="C:\windows\system32\PerfCenterCpl.ico"/>
    <TITLE>Listar Conteudo</TITLE>

    <style>
    .Field {color: black; border: 1px solid #FFFFFF; background-color: #FFCC00;}
    .Find  {color:blue; font: 10px Arial;}
    </style>
    <script>
    var Fo =new ActiveXObject("Scripting.FileSystemObject");
    var StrOut = new String();
    var FileName = new String();
    var Extention = new String();
    var shell = new ActiveXObject("WScript.Shell");

    function FindFile(FOo){
    var FSo = new Enumerator(FOo.Files);
    for(i=0;!FSo.atEnd();FSo.moveNext())
    {
    if(FileName == "*" ||  FSo.item().name.slice(0,FSo.item().name.lastIndexOf(".")).toLowerCase().indexOf(FileName)>-1)
    if(Extention == "*" || FSo.item().name.slice(FSo.item().name.lastIndexOf(".")+1).toLowerCase().indexOf(Extention)>-1){
    StrOut += "<tr "+ ((i%2)? "":"bgcolor=#DDAA55")  +"><td width=25%><font class=find>" + FSo.item().name + "</font></td><td><font class=find>" + FSo.item().type + "</font></td><td><font class=find>"+ String(FSo.item().size/(1024*1024)).slice(0,3) +
    " MB</td><td><font class=find> Abrir <input type='checkbox' name='item' value='" + FSo.item().name + "' title='Clique para selecionar: [" + FSo.item().name + "]'></font></td></tr>";
    i++
    }
    }
    }
    function Scan(){
        FileName = (search.value.lastIndexOf(".")>-1)? search.value.slice(0,search.value.lastIndexOf(".")):(search.value.length>0)? search.value.toLowerCase():"*";
        Extention = (search.value.lastIndexOf(".")>-1)? search.value.slice(search.value.lastIndexOf(".")+1).toLowerCase():"*";
        if(path.value.length>0 && Fo.FolderExists(path.value)){
            StrOut = "<form name='processform' method='post'><table border=0 width=100% cellspacing=0>";
            FindFile(Fo.GetFolder(path.value))
            outPut.innerHTML = StrOut+"</table></form>";
            var nomearquivo = FSo.item().name
    }
        else alert("Insira um caminho correto");
    }

    function OpenArquivo(){
        var aChk = document.getElementsByName("item");
        for (var i=0;i<aChk.length;i++){
            if (aChk[i].checked == true){
                // CheckBox Marcado... Faça alguma coisa... Ex:
                //alert( path.value + aChk[i].value);
                shell.run(path.value + aChk[i].value);
            }  else {
                // CheckBox Não Marcado... Faça alguma outra coisa...
            }
        }
    }

    </script>

    <BODY topmargin="10" leftmargin="0">
    <table align="center" border=0 width=80% cellspacing="0" style="border-collapse: collapse" cellpadding="2">
    <tr >
        <td  align="center"  bgcolor="#FFCC00"><b><font face="Arial" size="2">Nome :</font></b> </td>
        <td dir="ltr" bgcolor="#FFCC00"><input size=50 type=text id=search name=search class="Field"></td>
    </tr>
    <tr>
        <td align="center" bgcolor="#FFCC00"><p dir="ltr"><b><font face="Arial" size="2">Pasta : </font></b> </td>
        <td bgcolor="#FFCC00"><input size=50 type=text value="C:\" id=path name=path class="Field" ></td>
    </tr>
    <tr>
        <td bgcolor="#FFCC00"> </td>
        <td bgcolor="#FFCC00"><input type=button value="      Listar      " onclick=Scan() class="Field">
        <input type=button  value="Abrir Arquivo(s)" onclick="OpenArquivo()"  title="Abrir Arquivos Selecionados"  class="Field"></td>
    </tr>
    <tr>
        <td colspan=2 align=right bgcolor="#FFCC00"><font face=arial size=2><b>Resultado Busca</b></font><hr></td>
    </tr>
    <tr>
        <td colspan=2 bgcolor="#FFCC00"><div id=outPut></div></td>
    </tr>
    </table>
    </BODY>
    </HTML>



    att, Aparecido Deveza


    • Marcado como Resposta Marcelo TI sexta-feira, 15 de novembro de 2013 02:24
    • Editado Aparecido Deveza domingo, 17 de novembro de 2013 21:54 alteração cod
    terça-feira, 12 de novembro de 2013 10:44
  • Boa  noite Marcelo,

    então o  "Fo" esta definido na linha 19 [var Fo =new ActiveXObject("Scripting.FileSystemObject");] e o FSo esta definido na linha 26 [var FSo = new Enumerator(FOo.Files);] onde ele pega o resultado da função, por isso que qndo vc alterou apresentou esse erro.

    Como falei alteriormente, eu peguei esse cod pronto, mas é o mesmo cod que eu havia postando, no add fiz as seguintes alterações :

    na linha 31 : [" MB</td><td><font class=find> Abrir <input type='checkbox' name='item' value='" + FSo.item().name + "' title='Clique para selecionar: [" + FSo.item().name + "]'></font></td></tr>"; ]

    isso para gerar o checkbox.

    a Função da linha 49 [ function OpenArquivo(){]

    e o botão <input type=button  value="Abrir Arquivo(s)" onclick="OpenArquivo()"  title="Abrir Arquivos Selecionados"  class="Field"></td> na linha 77.

    se vc ainda tiver o primeiro cod, faça este teste.

    outra coisa, eu só testei no win7, não sei como é no XP, se esse for o seu caso.

    mas faça o teste, qualquer coisa me avisa.


    em todo caso segue o link com os 2 cod LINK


    att, Aparecido Deveza


    • Editado Aparecido Deveza terça-feira, 19 de novembro de 2013 01:43
    • Marcado como Resposta Marcelo TI terça-feira, 19 de novembro de 2013 11:58
    terça-feira, 19 de novembro de 2013 01:28

Todas as Respostas

  • Ba galera, alguem tem alguma ideia pra me ajudar tche.

    obrigado.

    segunda-feira, 11 de novembro de 2013 00:52
  • Marcelo,

    Consegue fazer um exemplo que liste todos os arquivos, sem filtrar?


    Fábio de Paula Junior

    segunda-feira, 11 de novembro de 2013 15:30
    Moderador
  • Bom dia Marcelo e Fabio,

    Bom eu tenho um HTA que lista diretório...

    que é baseado nesse COD...no caso ele não faz o link com o arquivo, mas acredito que der para adaptar...acho que isso ja pode dar uma luz....

    <META HTTP-EQUIV="MSThemeCompatible" CONTENT="YES">
    <HTML>
    <HTA:Application
    Caption = yes
    border = think
    ShowInTaskBar = yes
    MaximizeButton = yes
    MinimizeButton = yes
    VERSION="v2.0"
    SCROLL="Yes"
    ICON="C:\windows\system32\PerfCenterCpl.ico"/>
    <TITLE>Listar Conteudo</TITLE>

    <style>
    .Field {color: black; border: 1px solid #FFFFFF; background-color: #FFCC00;}
    .Find  {color:blue; font: 10px Arial;}
    </style>
    <script>
    var Fo =new ActiveXObject("Scripting.FileSystemObject");
    var StrOut = new String();
    var FileName = new String();
    var Extention = new String();
    var shell = new ActiveXObject("WScript.Shell");

    function FindFile(FOo){
    var FSo = new Enumerator(FOo.Files);
    for(i=0;!FSo.atEnd();FSo.moveNext())
    {
    if(FileName == "*" ||  FSo.item().name.slice(0,FSo.item().name.lastIndexOf(".")).toLowerCase().indexOf(FileName)>-1)
    if(Extention == "*" || FSo.item().name.slice(FSo.item().name.lastIndexOf(".")+1).toLowerCase().indexOf(Extention)>-1){
    StrOut += "<tr "+ ((i%2)? "":"bgcolor=#DDAA55")  +"><td width=25%><font class=find>" + FSo.item().name + "</font></td><td><font class=find>" + FSo.item().type + "</font></td><td><font class=find>"+ String(FSo.item().size/(1024*1024)).slice(0,3) +
    " MB</td><td><font class=find> Abrir <input type='checkbox' name='item' value='" + FSo.item().name + "' title='Clique para selecionar: [" + FSo.item().name + "]'></font></td></tr>";
    i++
    }
    }
    }
    function Scan(){
        FileName = (search.value.lastIndexOf(".")>-1)? search.value.slice(0,search.value.lastIndexOf(".")):(search.value.length>0)? search.value.toLowerCase():"*";
        Extention = (search.value.lastIndexOf(".")>-1)? search.value.slice(search.value.lastIndexOf(".")+1).toLowerCase():"*";
        if(path.value.length>0 && Fo.FolderExists(path.value)){
            StrOut = "<form name='processform' method='post'><table border=0 width=100% cellspacing=0>";
            FindFile(Fo.GetFolder(path.value))
            outPut.innerHTML = StrOut+"</table></form>";
            var nomearquivo = FSo.item().name
    }
        else alert("Insira um caminho correto");
    }

    function OpenArquivo(){
        var aChk = document.getElementsByName("item");
        for (var i=0;i<aChk.length;i++){
            if (aChk[i].checked == true){
                // CheckBox Marcado... Faça alguma coisa... Ex:
                //alert( path.value + aChk[i].value);
                shell.run(path.value + aChk[i].value);
            }  else {
                // CheckBox Não Marcado... Faça alguma outra coisa...
            }
        }
    }

    </script>

    <BODY topmargin="10" leftmargin="0">
    <table align="center" border=0 width=80% cellspacing="0" style="border-collapse: collapse" cellpadding="2">
    <tr >
        <td  align="center"  bgcolor="#FFCC00"><b><font face="Arial" size="2">Nome :</font></b> </td>
        <td dir="ltr" bgcolor="#FFCC00"><input size=50 type=text id=search name=search class="Field"></td>
    </tr>
    <tr>
        <td align="center" bgcolor="#FFCC00"><p dir="ltr"><b><font face="Arial" size="2">Pasta : </font></b> </td>
        <td bgcolor="#FFCC00"><input size=50 type=text value="C:\" id=path name=path class="Field" ></td>
    </tr>
    <tr>
        <td bgcolor="#FFCC00"> </td>
        <td bgcolor="#FFCC00"><input type=button value="      Listar      " onclick=Scan() class="Field">
        <input type=button  value="Abrir Arquivo(s)" onclick="OpenArquivo()"  title="Abrir Arquivos Selecionados"  class="Field"></td>
    </tr>
    <tr>
        <td colspan=2 align=right bgcolor="#FFCC00"><font face=arial size=2><b>Resultado Busca</b></font><hr></td>
    </tr>
    <tr>
        <td colspan=2 bgcolor="#FFCC00"><div id=outPut></div></td>
    </tr>
    </table>
    </BODY>
    </HTML>



    att, Aparecido Deveza


    • Marcado como Resposta Marcelo TI sexta-feira, 15 de novembro de 2013 02:24
    • Editado Aparecido Deveza domingo, 17 de novembro de 2013 21:54 alteração cod
    terça-feira, 12 de novembro de 2013 10:44
  • Subindo.

    Fábio de Paula Junior

    quinta-feira, 14 de novembro de 2013 16:29
    Moderador
  • Ba Aparecido Jedi Deveza, tu é o cara tche, ficou muito melhor do que eu pensava tche. muito obrigado mesmo tche...
    sexta-feira, 15 de novembro de 2013 02:25
  • Ba Aparecido

    Bom dia tche tudo bem, neste codigo q vc montou tche é possivel colocar uma funçao tche que possibilite abrir um dos arquivos que foi listados tche.

    Obrigado.

    domingo, 17 de novembro de 2013 16:30
  • Boa noite Marcelo,

    alterei o cod do post, no dia que postei até iria fazer da forma que vc queria, mas na correria do dia-a-dia, acabei não alterando, bom só para que vc entenda alteração, agora qnd pesquisar o diretorio ele cria um checkbox para cada item, com isso vc seleciona o arquivo que quiser e ao clicar no botão que adicionei, ele abre todos os intems selecionados


    att, Aparecido Deveza

    domingo, 17 de novembro de 2013 21:59
  • Ba tri legal tche, vc é muito rapido.

    Valeu pela ajuda tche.

    Carinha quando executo ele agora, ele da um erro na linha 43, columm 9, FSo não esta definido, erro em tempo de execução do javascript tche.

    Ai olhando o codigo vi que o Var esta Fo no FSo, ai mudei a linha 44 de var nomearquivo = FSo.item para Fo.item, ai ele da outro erro tche, O objeto não oferece suporte à propriedade ou método 'item'.

    obrigado tche.

    segunda-feira, 18 de novembro de 2013 11:04
  • Boa  noite Marcelo,

    então o  "Fo" esta definido na linha 19 [var Fo =new ActiveXObject("Scripting.FileSystemObject");] e o FSo esta definido na linha 26 [var FSo = new Enumerator(FOo.Files);] onde ele pega o resultado da função, por isso que qndo vc alterou apresentou esse erro.

    Como falei alteriormente, eu peguei esse cod pronto, mas é o mesmo cod que eu havia postando, no add fiz as seguintes alterações :

    na linha 31 : [" MB</td><td><font class=find> Abrir <input type='checkbox' name='item' value='" + FSo.item().name + "' title='Clique para selecionar: [" + FSo.item().name + "]'></font></td></tr>"; ]

    isso para gerar o checkbox.

    a Função da linha 49 [ function OpenArquivo(){]

    e o botão <input type=button  value="Abrir Arquivo(s)" onclick="OpenArquivo()"  title="Abrir Arquivos Selecionados"  class="Field"></td> na linha 77.

    se vc ainda tiver o primeiro cod, faça este teste.

    outra coisa, eu só testei no win7, não sei como é no XP, se esse for o seu caso.

    mas faça o teste, qualquer coisa me avisa.


    em todo caso segue o link com os 2 cod LINK


    att, Aparecido Deveza


    • Editado Aparecido Deveza terça-feira, 19 de novembro de 2013 01:43
    • Marcado como Resposta Marcelo TI terça-feira, 19 de novembro de 2013 11:58
    terça-feira, 19 de novembro de 2013 01:28
  • Ba aparecido

    Obrigado mais uma vez tche, eu peguei a linha 43 e coloquei // para nao executar, e o erro parou e ele ta abrindo os arquivos selecionado tche, kkk vai saber tech, eu teste no Windows 7 com ie nativo e ie 11 e no xp e deu o mesmo erro, ai quando coloquei o // parou kkk.

    Obrigado mesmo grande Jedi.

    terça-feira, 19 de novembro de 2013 11:58
  • Não entendi o pq de criar este HTA.

    Desculpe, mas pq reinventar a roda, sendo que há o localizar/pesquisa do Windows Explorer?

    Lá tem as opções de localizar tipo de arquivo e nome.



    Warley

    quarta-feira, 27 de novembro de 2013 13:02
  • Ba Warley

    Bom dia tche.

    Concordo com vc, porem o HTA em questão tche, esta sendo utilizado no Windows PE, como parte de outro HTA que tem outras funções, e a razão principal, é facilitar e agilizar a produção, e o grande amigo Aparecido deu uma grande força.

    Aparecido obrigado mais uma vez tche.

    quarta-feira, 27 de novembro de 2013 13:32