none
Vbscript OpenTextFile Split - Len RRS feed

  • Pergunta

  • Viva,

    Necessitava de uma pequena ajuda para um pequeno problema que me tem dado umas pequenas dores de cabeça. Então é assim.

    Estou a correr um script que me pesquisa todos os ficheiros mp3 que se encontram em C:\ e grava o log num txt. Até aqui tudo bem. O que necessito é de separar os files para uma váriavel e os bytes para outra.

    O problema aqui é que o log que é gerado não tem os espaços correctos entre a informação. Passo a explicar. O espaçamento da esquerda até ao numero de ficheiros vai diminuindo quando o numero sobe. O numero de bytes se for de apenas 4gb o espaçamento entre a palavra File(s) até ao numero é de 2 se o numero de bytes aumentar para 14gb o espaçamento passa para 1.

    Total Files Listed:
    < 11 espaços >11305<1>File(s)<2>4.459.988.139<1>bytes
    < 12 espaços >1305<1>File(s)<1>14.459.988.139<1>bytes
    < 13 espaços >305<1>File(s)<1>114.459.988.139<1>bytes

    Script para criar o log com a quantiadade de mp3 que tenho no meu pc:

    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "%comspec% /c c: & cd\ & dir /s /w *.mp3 >> C:\Dados\MusicPC.txt", 1, True

    O script que estou a executar para retirar a informação que necessito é o seguinte:

    Dim objFSO, objShell, objFile
    Dim strFile, strLine, strTotalFiles, Flag
    Const ForReading = 1
    Const ForWriting = 2
    Const ForAppending = 8
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objShell = CreateObject("Wscript.Shell")

    Set objFile = objFSO.OpenTextFile("C:\Dados\MusicPc.txt", 1)

    Do Until objFile.AtEndOfStream
    strLine = objFile.ReadLine

    If Instr(strLine, "Total Files Listed:") Then
    Flag = True

    End If

       If Flag = True Then

        strTotalFiles = Trim(strLine)
        strTotalFiles = Trim(objFile.ReadLine)
        wscript.echo strTotalFiles
        
        Flag = False
       End If

     Loop

    objFile.Close

    Output: 11305 File(s)  4.459.988.139 bytes

    Como é que faço para ter apenas numa variavel o numero de files e numa outra variavel o numero de bytes. Exemplo

    strVarFiles = 11305
    strVarBytes = 4.459.988.139 ou 14.459.988.139 ou 114.459.988.139

    Obrigado pela colaboração

    Ricardo Gaspar

    terça-feira, 17 de abril de 2012 22:31

Respostas

  • Opá,

    Pode transformar a string em um array, utilize o split para quebrar pelos espaços (algumas modificações antes), segue um exemplo

    strTeste="         11305 File(s) 4.459.988.139"
    
    '1)Tirar espaços do inicio e fim com o TRIM
    strTeste=trim(strTeste)
    
    '2)Substituir "  " por " " (2 espaços por 1)
    strTeste=replace(strTeste,"  "," ")
    
    '3)Transforma em um Array
    arrTeste=split(strTeste," ")
    
    'Agora você tem cada info em uma parte do array
    for each item in arrTeste
    	wscript.echo item
    next
    
    'outra forma
    wscript.echo "-----------------"
    wscript.echo "Quantidade: " & arrTeste(0)
    wscript.echo "Tamanho:    " & arrTeste(2)


    Fábio de Paula Junior

    • Marcado como Resposta RGaspar quarta-feira, 18 de abril de 2012 14:04
    quarta-feira, 18 de abril de 2012 13:43
    Moderador
  • Adicionei uma modificação que pode ser importante

    strTeste="         11305 File(s)   4.459.988.139"
    
    '1)Tirar espaços do inicio e fim com o TRIM
    strTeste=trim(strTeste)
    
    '2)Substituir "  " por " " (2 espaços por 1)
    while instr(strTeste, "  ")
    	strTeste=replace(strTeste,"  "," ")
    wend
    
    '3)Transforma em um Array
    arrTeste=split(strTeste," ")
    
    'Agora você tem cada info em uma parte do array
    for each item in arrTeste
    	wscript.echo item
    next
    
    'outra forma
    wscript.echo "-----------------"
    wscript.echo "Quantidade: " & arrTeste(0)
    wscript.echo "Tamanho:    " & arrTeste(2)


    Fábio de Paula Junior

    • Marcado como Resposta RGaspar quarta-feira, 18 de abril de 2012 14:03
    quarta-feira, 18 de abril de 2012 13:48
    Moderador

Todas as Respostas

  • Opá,

    Pode transformar a string em um array, utilize o split para quebrar pelos espaços (algumas modificações antes), segue um exemplo

    strTeste="         11305 File(s) 4.459.988.139"
    
    '1)Tirar espaços do inicio e fim com o TRIM
    strTeste=trim(strTeste)
    
    '2)Substituir "  " por " " (2 espaços por 1)
    strTeste=replace(strTeste,"  "," ")
    
    '3)Transforma em um Array
    arrTeste=split(strTeste," ")
    
    'Agora você tem cada info em uma parte do array
    for each item in arrTeste
    	wscript.echo item
    next
    
    'outra forma
    wscript.echo "-----------------"
    wscript.echo "Quantidade: " & arrTeste(0)
    wscript.echo "Tamanho:    " & arrTeste(2)


    Fábio de Paula Junior

    • Marcado como Resposta RGaspar quarta-feira, 18 de abril de 2012 14:04
    quarta-feira, 18 de abril de 2012 13:43
    Moderador
  • Adicionei uma modificação que pode ser importante

    strTeste="         11305 File(s)   4.459.988.139"
    
    '1)Tirar espaços do inicio e fim com o TRIM
    strTeste=trim(strTeste)
    
    '2)Substituir "  " por " " (2 espaços por 1)
    while instr(strTeste, "  ")
    	strTeste=replace(strTeste,"  "," ")
    wend
    
    '3)Transforma em um Array
    arrTeste=split(strTeste," ")
    
    'Agora você tem cada info em uma parte do array
    for each item in arrTeste
    	wscript.echo item
    next
    
    'outra forma
    wscript.echo "-----------------"
    wscript.echo "Quantidade: " & arrTeste(0)
    wscript.echo "Tamanho:    " & arrTeste(2)


    Fábio de Paula Junior

    • Marcado como Resposta RGaspar quarta-feira, 18 de abril de 2012 14:03
    quarta-feira, 18 de abril de 2012 13:48
    Moderador
  • Fábio,

    Muitissimo obrigado. É mesmo isto que necessito.

    Ricardo Gaspar

    quarta-feira, 18 de abril de 2012 14:03