Usuário com melhor resposta
Como criar um Script para criar atalho com critérios de verificação ??

Pergunta
-
Olá Pessoal, atualmente possuo esse Script, com o objetivo de cria atalho atalho de um determinado arquivo automaticamente na área de trabalho
Porem gostaria que o script somente criasse o atalho, se o ".EXE" realmente fosse encontrado,..., pois quando ele não acha o programa, mesmo assim acaba criando um atalho em branco e inválido na área de trabalho!! Preciso disso para por na inicialização do sistema, fazendo verificação em varias pastas de vários servidores, obviamente cada VBS verificando um servidor diferente...
Obs: Gostaria que não informasse mensagem nenhum de que o arquivo não foi encontrado, simplesmente ignorar...
Existe algum parâmetro pra isso...
me ajudem por favor !!!
strAppPath = "\\server\pasta\teste.exe"
Set objShell = CreateObject("WScript.Shell")
objDesktop = objShell.SpecialFolders("Desktop")
Set objLink = objShell.CreateShortcut(objDesktop & "\NomedoAtalho.lnk")
objLink.TargetPath = strAppPath
objLink.WindowStyle = 3
objLink.Save
WScript.Quit
- Editado Werik Gomes quarta-feira, 16 de dezembro de 2015 18:25
Respostas
-
Olá Werik,
Para não aparecer nenhuma mensagem de erro, basta adicionar no ínicio do script:
on error resume next
Para verificar se o arquivo existe antes de criar o atalho, tente esse script abaixo:
on error resume next strAppPath = "\\gm9-nus-dc01\prof$\teste.exe" Set objFSO = CreateObject("Scripting.FileSystemObject") strExist = objFSO.FileExists(strAppPath) If not strExist Then wscript.echo "Arquivo nao existe, saindo..." WScript.Quit End If Set objShell = CreateObject("WScript.Shell") objDesktop = objShell.SpecialFolders("Desktop") Set objLink = objShell.CreateShortcut(objDesktop & "\NomedoAtalho.lnk") objLink.TargetPath = strAppPath objLink.WindowStyle = 3 objLink.Save WScript.Quit
Qualquer dúvida, avise.
Se a resposta fornecida nessa thread ajudou na sua solução, não esqueça de marcar como resposta!
Abraço,
Gustavo Zimmermann Montesdioca - MTAC, MCT
Blog: www.gm9.com.br- Sugerido como Resposta GustavoZimmermannMicrosoft employee quarta-feira, 16 de dezembro de 2015 18:54
- Marcado como Resposta Werik Gomes sábado, 19 de dezembro de 2015 22:11
-
Minha contribuição em PowerShell (PoSh!) utilizando um arquivo CSV de parâmetros para a criação dos atalhos e validação como solução alternativa:
$PoShShell = New-Object -ComObject WScript.Shell ForEach ($ShortCut in (Import-Csv -Delimiter ";" C:\Utils\ShortCuts.csv)) { If (Test-Path $ShortCut.ShortCutPath) { $PoShShortCut = $PoShShell.CreateShortcut($env:USERPROFILE + "\Desktop\" + $ShortCut.ShortCutName + ".lnk") $PoShShortCut.TargetPath = $ShortCut.ShortCutPath $PoShShortCut.WorkingDirectory = $ShortCut.ShortCutWorkingDirectory $PoShShortCut.Save() } }
- Editado 4HorsemenOfDaIT domingo, 20 de dezembro de 2015 13:56
- Marcado como Resposta Werik Gomes quinta-feira, 4 de fevereiro de 2016 12:52
Todas as Respostas
-
-
Olá Werik,
Para não aparecer nenhuma mensagem de erro, basta adicionar no ínicio do script:
on error resume next
Para verificar se o arquivo existe antes de criar o atalho, tente esse script abaixo:
on error resume next strAppPath = "\\gm9-nus-dc01\prof$\teste.exe" Set objFSO = CreateObject("Scripting.FileSystemObject") strExist = objFSO.FileExists(strAppPath) If not strExist Then wscript.echo "Arquivo nao existe, saindo..." WScript.Quit End If Set objShell = CreateObject("WScript.Shell") objDesktop = objShell.SpecialFolders("Desktop") Set objLink = objShell.CreateShortcut(objDesktop & "\NomedoAtalho.lnk") objLink.TargetPath = strAppPath objLink.WindowStyle = 3 objLink.Save WScript.Quit
Qualquer dúvida, avise.
Se a resposta fornecida nessa thread ajudou na sua solução, não esqueça de marcar como resposta!
Abraço,
Gustavo Zimmermann Montesdioca - MTAC, MCT
Blog: www.gm9.com.br- Sugerido como Resposta GustavoZimmermannMicrosoft employee quarta-feira, 16 de dezembro de 2015 18:54
- Marcado como Resposta Werik Gomes sábado, 19 de dezembro de 2015 22:11
-
Amigo, ficou quase perfeito, só queria acertar um detalhe, que é na caixa de mensagem "Arquivo nao existe, saindo..." gostaria que ela fechasse sozinha sem que eu tenha que dar "OK", colocando um tempo mínimo de 5 Segundos.
E outro detalhe é, se consigo mandar buscar mais de um ".EXE", porém com nomes diferentes, utilizando a mesma base de código, sem que eu tenha que criar vários Scripts, evitando que o arquivo fique muito extenso ...
-
Werik,
Para não acontecer a mensagem, é só remover o wscript.echo dentro do if.
Para criar vários, utilize um Array, veja o exemplo abaixo:
Se a resposta fornecida nessa thread ajudou na sua solução, não esqueça de marcar como resposta!
Abraço,
Gustavo Zimmermann Montesdioca - MTAC, MCT
Blog: www.gm9.com.brDim strAppPath, objFSO, objShell, strPath, strExist, strFileName, objDesktop, objLink on error resume next strAppPath = Array("c:\teste.exe", "c:\teste1.exe") Set objFSO = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell") For Each strPath in strAppPath strExist = objFSO.FileExists(strPath) If strExist Then strFileName = objFSO.GetFileName(strPath) strFileName = Mid(strFileName, 1, len(strFileName)-4) objDesktop = objShell.SpecialFolders("Desktop") Set objLink = objShell.CreateShortcut(objDesktop & "\" & strFileName & ".lnk") objLink.TargetPath = strPath objLink.WindowStyle = 3 objLink.Save End If Next WScript.Quit
-
Olá amigo, desculpa pela demora à responder. A parte da mensagem ficou resolvida, com relação a mesma base de código buscar mais de um atalho, gostaria que ele buscasse atalhos em mais de um servidor, porém criasse o atalho na área de trabalho com nome diferente EX: \\Servidor1\Programa1.EXE ele cria o atalho na área de trabalho "atalho1.lnk. .................... e a segunda busca seria: \\Servidor2\Programa2.EXE ele cria o atalho na área de trabalho "atalho2.lnk ... tentei adicionar o comando "array" na linha "
Set objLink = objShell.CreateShortcut = array (objDesktop & "\Atalho1.lnk" "Atalho2.lnk")
porém não obtive sucesso, assim como na primeira linha quando o mesmo me orientou a fazer....
O objetivo é que ele busque mais de um .EXE, porém crie atalhos com nomes diferentes, pois cada programa possui funções diferentes e por isso preciso que ele crie cada atalho para cada .EXE encontrado....
vlw pela ajuda ....
- Editado Werik Gomes sábado, 19 de dezembro de 2015 22:24
-
Minha contribuição em PowerShell (PoSh!) utilizando um arquivo CSV de parâmetros para a criação dos atalhos e validação como solução alternativa:
$PoShShell = New-Object -ComObject WScript.Shell ForEach ($ShortCut in (Import-Csv -Delimiter ";" C:\Utils\ShortCuts.csv)) { If (Test-Path $ShortCut.ShortCutPath) { $PoShShortCut = $PoShShell.CreateShortcut($env:USERPROFILE + "\Desktop\" + $ShortCut.ShortCutName + ".lnk") $PoShShortCut.TargetPath = $ShortCut.ShortCutPath $PoShShortCut.WorkingDirectory = $ShortCut.ShortCutWorkingDirectory $PoShShortCut.Save() } }
- Editado 4HorsemenOfDaIT domingo, 20 de dezembro de 2015 13:56
- Marcado como Resposta Werik Gomes quinta-feira, 4 de fevereiro de 2016 12:52