Inquiridor
Script para executar video

Pergunta
-
Olá pessoal,
Estou para finalizar meu TCC, porém estou atolado numa parte e preciso da ajuda de vocês kkk.
Criei um script para pegar os arquivos uma determinada pasta num servidor "sv1", e jogar num diretório no meu servidor "sv2", este arquivo é gerado no servidor SV1 com o nome do meu item, exemplo lapis_azul.txt, até ai tudo bem, porém preciso criar um script no meu SV2 para executar um vídeo propaganda desse meu item.
Estou pensando em uma forma mas não sei coloca-la em prática, ficaria assim:
diretorio/arquivos_txt/lapis_azul.txt
diretorio/videos/lapis_azul.avi
Os comandos ficariam +o- assim:
set video_name = diretorio/arquivos_txt/lapis_azul.txt
comandoParaExecutarAvi = diretorio/videos/"video_name"
Obrigado!
Conto com a ajuda de vocês!!!
Todas as Respostas
-
Ola Isaque,
Se entendi bem é isso o o que vc quer?
Como vc não falou o tipo de script, criei esse vbs.
salve com a extensão vbs (Ex: teste.vbs)
faça o teste...
Set oShell = CreateObject("Wscript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sDiretorioTXT = "C:\temp\arquivos_txt\lapis_azul.txt" sDiretorioAVI = "C:\temp\videos\" video_name = sDiretorioAVI & Replace(oFSO.GetFileName(oFSO.GetFile(sDiretorioTXT)),"txt","avi") wscript.echo "Diretótio TXT: " & sDiretorioTXT & Chr(13) & "Video: " & video_name oShell.run video_name, 1, true
att, Aparecido Deveza
-
Olá Aparecido,
Primeiramente muito obrigado pela resposta.
Estou no trabalho no momento e não consegui testar o script, desculpe.
Eu desconheço essa linguagem, mas é isso que você fez que eu quero.
Tenho outra dúvida, se por exemplo, no meu diretório do SV1 eu tiver mais de um arquivo de texto, exemplo lapis_azul.txt e lapis_preto.txt, esses arquivos serão jogados na minha pasta diretorio/arquivos_txt/***.txt, se eu tiver duas chamadas nesse meu diretório, essa variavel sDiretotioTXT = "C:\temp\arquivos_txt\lapis_azul.txt" teria esse valor estático, eu conseguiria fazer algo assim:
Exemplo:
sDiretotioTXT = "C:\temp\arquivos_txt\*.txt"
Porém poderia chegar 2 arquivos diferentes no meu diretório do SV2, como eu trataria isso? teria por exemplo alguma função assim:
Exemplo:
verificadiretorio(){
verifica se existe algum arquivo .txt no diretorio, cria a variavel video_name
goto executavideo
}
executavideo(){
executa o video
goto verificadiretorio
}
Grato!
-
-
Olá,
Realizei o teste com o seu script e funcionou certinho, obrigado!
Quanto a linguagem, ainda não defini por não saber qual usar (não conheço muito bem sobre linguagens de servidores), o script de transferência de arquivos fiz em .bat, porem minha aplicação principal é em JavaWeb.
-
Ola Isaque,
fiz as alterações, fiz em VBS que tenho mais familiarizade, rs,
Bom segue o script, faça um teste..
Set oShell = CreateObject("Wscript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sDiretorioTXT = "C:\temp\arquivos_txt" sDiretorioAVI = "C:\temp\videos\" Set oFolderTXT = oFSO.GetFolder(sDiretorioTXT) Set sfilesTXT = oFolderTXT.Files For each sTXT In sfilesTXT '*** Verifica se os arquivos que existem na pasta são com extensão TXT If oFSO.GetExtensionName(sTXT) = "txt" Then '*** Se houver arquivos TXT, executa a rotina para rodar o video ExecutaVideo(Replace(sTXT.Name,"txt","avi")) End If Next Sub ExecutaVideo(sFileAVI) video_name = sDiretorioAVI & sFileAVI '*** Verifica se o arquivo AVI existe, senão apresenta erro If oFSO.FileExists(video_name) Then wscript.echo "Diretótio TXT: " & sDiretorioTXT & Chr(13) & "Video: " & video_name oShell.run video_name, 1, true Else wscript.echo "O [" & sFileAVI & "] não existe no diretorio " & sDiretorioAVI End IF End Sub
att, Aparecido Deveza
- Editado Aparecido Deveza quarta-feira, 11 de outubro de 2017 15:27
-
Olá Aparecido,
Realizei o teste com esse script, funcionou muito bem, porém encontrei outra dificuldade.
Adicionei uma verificação ao Script para ver se existem arquivos dentro da minha pasta, se não houver ele executa uma propaganda programada, segue:
Set oShell = CreateObject("Wscript.Shell")
Set oFSO = CreateObject("Scripting.FileSystemObject")
sDiretorioTXT = "C:\arquivos_txt"
sDiretorioAVI = "C:\videos\"
sDiretorioBackup = "C:\teste\123.avi"
Set oFolderTXT = oFSO.GetFolder(sDiretorioTXT)
Set sfilesTXT = oFolderTXT.Files
If (oFSO.FileExists(sDiretorioTXT)) Then
WScript.Echo("Entrei")
Else
WScript.Echo("Sem propaganda para executar no momento, executando propaganda programada")
oShell.run sDiretorioBackup, 1, true
End If
For each sTXT In sfilesTXT
'*** Verifica se os arquivos que existem na pasta são com extensão TXT
If oFSO.GetExtensionName(sTXT) = "txt" Then
'*** Se houver arquivos TXT, executa a rotina para rodar o video
ExecutaVideo(Replace(sTXT.Name,"txt","avi"))
End IF
Next
Sub ExecutaVideo(sFileAVI)
video_name = sDiretorioAVI & sFileAVI
'*** Verifica se o arquivo AVI existe, senão apresenta erro
If oFSO.FileExists(video_name) Then
wscript.echo "Diretótio TXT: " & sDiretorioTXT & Chr(13) & "Video: " & video_name
oShell.run video_name, 1, true
Else
wscript.echo "O [" & sFileAVI & "] não existe no diretorio " & sDiretorioAVI
End IF
End Sub
A verificação funcionou, mas logo após a execução do video ele para o script (mesmo sem a verificação), pensei em tentar algo assim:verifica pasta > sem arquivos? > executa prop. prog. > verifica pasta > chegou arquivo? > executa propaganda.
Tudo isso constantemente, porém tenho uma duvida, se eu tiver esse mesmo arquivo na minha pasta eu precisaria "filtrar" o arquivo após a execução da propaganda, pois se continuar ali o arquivo a propaganda pode ficar no loop infinito só daquele arquivo, pensei em algo assim:
verifica pasta > sem arquivos? > executa prop. prog. > verifica pasta > chegou arquivo? > executa propaganda e filtra o arquivo (deleta ou move para uma outra pasta ex: ("c\history\")) > executou propaganda? > verifica pasta > ......
Teria como fazer algo assim com esse tipo de linguagem?
Estou começando na área de infraestrutura onde eu trabalho e estou gostando muito, porém ainda desconheço muitas coisas que da pra fazer com .bat, .sh, .vbs ... Se puder continuar me ajudando agradeço, pessoal da faculdade fica desmerecendo essas linguagens, quero mostrar pra eles que da pra fazer tudo por aqui kkkk
Obrigado!
-
Entendi, rs
Script administrativos não há problemas, hoje em dia usa-se muito powershell, mas tenho mais familiaridade com vbs, hta e Bat.
E me ajuda muito, mas é claro depende muito da necessidade.
Bom segue o script atualizado, nele eu movo os arquivo para uma pasta History, mas se optar por deletar, basta apagar ou comentar a entradas OFSO.Copy.
Veja se te ajuda, estamos aqui no forum para ajudar :)
Set oShell = CreateObject("Wscript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sDiretorioTXT = "C:\temp\arquivos_txt" sDiretorioAVI = "C:\temp\videos\" sDiretorioBackup = "C:\temp\bkp\123.avi" sDiretorioHistory = "C:\temp\History\" Set oFolderTXT = oFSO.GetFolder(sDiretorioTXT) Set sfilesTXT = oFolderTXT.Files '*** Verifica se existe arquivo na pasta TXT, senão executa o video BKP If sfilesTXT.Count > 0 Then ChecaPasta() Else msgbox "Sem propaganda para executar no momento" & Chr(13) & "Executando propaganda programada",48,"Alerta Propaganda" oShell.run sDiretorioBackup, 1, true ChecaPasta() End If Sub ChecaPasta() Do Until sFile=True IF sfilesTXT.Count > 0 Then wscript.echo "Entrei, total de arquivos: "& sfilesTXT.Count ExecutaPropaganda() WScript.Sleep(5000) Else wscript.echo "espere 5 sec e verifica a pasta novamente" WScript.Sleep(5000) End If Loop End Sub Sub ExecutaPropaganda() For each sTXT In sfilesTXT '*** Verifica se os arquivos que existem na pasta são com extensão TXT If oFSO.GetExtensionName(sTXT) = "txt" Then '*** Se houver arquivos TXT, executa a rotina para rodar o video ExecutaVideo(Replace(sTXT.Name,"txt","avi")) '*** Move o arquivo TXT para pasta de historico oFSO.CopyFile oFSO.GetAbsolutePathName(sTXT), sDiretorioHistory,true oFSO.DeleteFile oFSO.GetAbsolutePathName(sTXT),true End IF Next End Sub Sub ExecutaVideo(sFileAVI) video_name = sDiretorioAVI & sFileAVI '*** Verifica se o arquivo AVI existe, senão apresenta erro If oFSO.FileExists(video_name) Then wscript.echo "Diretótio TXT: " & sDiretorioTXT & Chr(13) & "Video: " & video_name oShell.run video_name, 1, true '*** Move o arquivo AVI para pasta de historico oFSO.CopyFile video_name, sDiretorioHistory,true oFSO.DeleteFile video_name, true Else wscript.echo "O [" & sFileAVI & "] não existe no diretorio " & sDiretorioAVI End IF End Sub
att, Aparecido Deveza
-
-
Olá Aparecido,
Fiz o teste com o script, temos alguns bugs, tentei concertar porém sem sucesso.
Assim, a parte de deleção não está 100% funcional, ela só deleta o arquivo caso não exista o AVI na pasta Videos, procedimento realizado:
Coloquei o arquivo com um nome diferente, ele filtrou o arquivo apareceu a mensagem de erro informando que não existia a propaganda na pasta Videos, porém quando ele executa a função com sucesso não deleta o arquivo, creio que essas linhas não estejam pegando o nome correto do arquivo para fazer a deleção:
ExecutaPropaganda() (nao deleta)
oFSO.CopyFile oFSO.GetAbsolutePathName(sTXT), sDiretorioHistory,true
oFSO.DeleteFile oFSO.GetAbsolutePathName(sTXT),trueExecutaVideo(arq) (deleta)
video_name = sDiretorioAVI & sFileAVI
oFSO.CopyFile video_name, sDiretorioHistory,true
oFSO.DeleteFile video_name, truePS: Todos os arquivos terminam com .txt e .avi (posso mudar isso se você preferir), acho que o script está se perdendo nesta parte.
Quanto ao loop de propagandas, também não está 100% funcional, pois quando ele termina de executar o vídeo o script "para" e quando tenho 2 arquivos na pasta arquivos_txt, ele executa apenas 1. Acredito que temos que colocar a função ChecaPasta() após a finalização da função ExecutaVideo(), tentei realizar o procedimento mas não funcionou.
Como sempre, conto com sua ajuda!
Obrigado!
-
Ola Isaque,
Fiz o teste em duas maquinas e rolou de boa, mas tem uma coisa, o comando Run, funciona da seguinte maneira.
oShell.Run "COmando.exe", 1 = Visivel ou 0 = oculto, True = Aguarda comando.exe finaliza ou False = Não espera.
sendo assim, para ir ao próximo video é necessário finalizar o media playe para que inicie o proximo video, não sei se era isso o que ocorria...
Ele não apaga pois o arquivo esta em uso,Pensado dessa maneira, fiz uma alteração, onde crio um player list de maneira que executa todos os videos em um unico player, e depois deleta os videos.
Lembrando que é necessário fechar o media player para apagar os videos.
Ele esta em loop, então sempre irá verificar a pasta do TXT.Const ForAppending= 8 Set oShell = CreateObject("Wscript.Shell") Set oFSO = CreateObject("Scripting.FileSystemObject") sDiretorioTXT = "C:\temp\arquivos_txt" sDiretorioAVI = "C:\temp\videos\" sDiretorioBackup = "C:\temp\bkp\123.avi" sDiretorioHistory = "C:\temp\History\" sListVideo = sDiretorioAVI & "videos.m3u" Set oFolderTXT = oFSO.GetFolder(sDiretorioTXT) Set sfilesTXT = oFolderTXT.Files '*** Verifica se existe arquivo na pasta TXT, senão executa o video BKP If sfilesTXT.Count > 0 Then ChecaPasta() Else msgbox "Sem propaganda para executar no momento" & Chr(13) & "Executando propaganda programada",48,"Alerta Propaganda" oShell.run sDiretorioBackup, 1, true ChecaPasta() End If Sub ChecaPasta() Do Until sFile=True IF sfilesTXT.Count > 0 Then wscript.echo "Entrei, total de arquivos: "& sfilesTXT.Count ExecutaPropaganda() WScript.Sleep(5000) Else wscript.echo "espere 5 sec e verifica a pasta novamente" WScript.Sleep(5000) End If Loop End Sub Sub ExecutaPropaganda() For i = 1 to sfilesTXT.Count For each sTXT In sfilesTXT '*** Verifica se os arquivos que existem na pasta são com extensão TXT If oFSO.GetExtensionName(sTXT) = "txt" Then '*** Se houver arquivos TXT, executa a rotina para rodar o video If oFSO.FileExists(sDiretorioAVI & Replace(sTXT.Name,"txt","avi")) Then video_name = sDiretorioAVI & Replace(sTXT.Name,"txt","avi") If Not oFSO.FileExists(sListVideo) Then Set oListVideo = oFSO.CreateTextFile(sListVideo) Else Set oListVideo = oFSO.OpenTextFile(sListVideo,ForAppending,True) End If oListVideo.WriteLine sDiretorioAVI & Replace(sTXT.Name,"txt","avi") oListVideo.close oFSO.CopyFile oFSO.GetAbsolutePathName(sTXT), sDiretorioHistory ,true oFSO.DeleteFile oFSO.GetAbsolutePathName(sTXT),true End IF End IF Next Next If oFSO.FileExists(sListVideo) Then on error resume next oShell.Run "wmplayer """ & sListVideo & """ /fullscreen", 1, true Set DelVideo = oFSO.OpenTextFile(sListVideo, 1) Do Until DelVideo.AtEndOfStream sVideo = DelVideo.Readline oFSO.CopyFile sVideo, sDiretorioHistory,true oFSO.DeleteFile sVideo,true Loop DelVideo.Close oFSO.DeleteFile sListVideo,true End If End Sub
att, Aparecido Deveza
- Sugerido como Resposta Aparecido Deveza segunda-feira, 20 de novembro de 2017 12:11
-
-