Ir ao conteúdo

Outro Como criar menu em PowerShell para acesso rápido a pastas?


Ir à solução Resolvido por Swalls,

Posts recomendados

Postado

Olá, pessoal! 😬

 

Queria um apoio de vocês!!
Atualmente trabalho como suporte em uma pequena empresa de logística, onde a maioria das tarefas ainda é realizada manualmente. Com a ajuda deste fórum já consegui evoluir bastante minhas habilidades como analista, e agora gostaria de pedir apoio em um novo projeto. Estou tentando criar um menu em PowerShell/Prompt para facilitar o acesso às pastas que organizei, só que não sei bem por onde começar. Um amigo desenvolveu algo semelhante que achei interessante, mas gostaria de personalizar e deixar num estilo diferente.

 

Esse foi o que meu amigo fez:  (Achei bacana e na prática ajuda bastante)

image.png.e195b5f2ac8124f5bfd26cacd977e227.png

 

 

Mas eu queria criar um parecido com esse: (Só que acessando as pastas que vou deixar no PC ou futuramente no diretório quando tiver acesso )

image.png.8915e813f225f4dc68d17aeb1bb4adb8.png

 

Vocês conseguem me dá uma luz o que eu preciso saber e o que estudar para criar esse projetinho? 

  • Amei 1
Postado

bom dia.
Em teoria, se for só essa interface simples no powershell, você não precisa saber nada além do powershell básico, o resto é só caminho para scripts, nem isso se usar o gpt para fazer o que quer, basta apenas tem um mínimo de algoritmo e saber o que está fazendo (entender do S.O).

ps: um atalho para pingar um host é o mesmo que usar uma lanterna para ver a luz da lampada.

  • Obrigado 1
Postado

@Swalls Seria mais fácil se ela mandasse os arquivos aqui. Para explicar, teriamos que criar do zero ou pegar um arquivo pela internet..

 

Mas é fácil programar .bat

Postado

@Swalls Obrigada pela resposta!
Agradeço pela ajuda, mesmo achando sua forma de falar um pouquinho ríspida rsrs. 😅

Eu optei por não usar o GPT porque, nesse caso não estaria aprendendo só copiando como muitos já fazem e minha intenção é realmente aprender e melhorar. Por isso perguntei o que era necessário para fazer, já que temos um leque de possibilidades de como pode ser executado. Como estou começando, sei que ainda tenho muito para estudar e confesso que nem do básico do PowerShell eu lembro kkkkk. Não dei a devida atenção no tempo da faculdade.

 

Mas gostei do que você mencionou: entender o sistema operacional e ter noções de algoritmo realmente faz diferença, começar por esse caminho deve ajudar a fazer algo melhor do que esse "Menu simples". 😬

Ps: Eu fiz um script para colocar a máquina no domínio, mas ele só abria o prompt e fechava KKKKKKKK. Seguimos na luta 🤣

 

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

@ArturHW Então, eu não tenho um arquivo pronto e também não queria simplesmente pegar algo da internet e modificar. Minha ideia é realmente criar do zero, mesmo que seja algo simples, só para aprender o básico antes de me aventurar em algo mais avançado. Por isso pedi uma luz sobre por onde começar a execução.

 

Já cheguei a fazer uns testes com um BAT bem simples para instalar programas e outro para colocar a máquina no domínio (esse último não deu muito certo kkkkk). Mas, na verdade, o que eu queria agora era algo mais prático, como um menu para acessar as pastas que uso no dia a dia.

 

Por exemplo, em vez de abrir cada pasta manualmente, ter um atalho em forma de menu para escolher qual quero abrir. Algo bem simples mesmo, só para entender como funciona e ir aprendendo aos poucos. 😬

image.png.996a968794c5cbdbcb354b47a43344f1.png

 

Desculpa se não sei explicar é que estou começando agora, então muita coisa ainda não entendo kkkk

  • Curtir 1
  • Solução
Postado

@Angelica Rios Não foi minha intenção parecer ríspido, na vdd eu queria parecer cômico. Odeio usar emoji, mas vou ter que acabar usando para não ser mal interpretado kkk.

 

Já tentei adicionar usuários ao domínio por script usando o dsadd, mas a quantidade de parâmetros necessários é tão grande que eu só desisti, porque ficava mais complexo do que fazer manualmente.

 

o que eu quis dizer com "usar uma lanterna para ver a luz da lampada" é que você já está usando um atalho simples, como o ping, e criando outro atalho simples por cima dele. (item 26 da sua primeira imagem).

 

por sinal o windows já tem uma espécie de "grande HUD de atalhos" além do painel do controle comum, você cria uma pasta e renomeia ela com o seguinte nome: "GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}", sem aspas.

 

Se puder nos dizer o que está tentando ou qual feature desse projeto está travado ou com duvidas poderemos lhe ajudar melhor.

 

  • Obrigado 1
  • Amei 1
Postado
2 minutos atrás, Swalls disse:

@Angelica Rios Não foi minha intenção parecer ríspido, na vdd eu queria parecer cômico. Odeio usar emoji, mas vou ter que acabar usando para não ser mal interpretado kkk.

 

Já tentei adicionar usuários ao domínio por script usando o dsadd, mas a quantidade de parâmetros necessários é tão grande que eu só desisti, porque ficava mais complexo do que fazer manualmente.

 

o que eu quis dizer com "usar uma lanterna para ver a luz da lampada" é que você já está usando um atalho simples, como o ping, e criando outro atalho simples por cima dele. (item 26 da sua primeira imagem).

 

por sinal o windows já tem uma espécie de "grande HUD de atalhos" além do painel do controle comum, você cria uma pasta e renomeia ela com o seguinte nome: "GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}", sem aspas.

 

Se puder nos dizer o que está tentando ou qual feature desse projeto está travado ou com duvidas poderemos lhe ajudar melhor.

 

Acontece kkk… Desculpa se pareceu que fui sensível. 😆

Nem precisa usar emoji, mulher que gosta de deixar o texto todo colorido kkkkkk


Então, aquela segunda imagem foi um colega que fez, mas ele não me explicou muito bem como conseguiu, por isso acabei tirando print. Achei a ideia fantástica e, como júnior, senti que precisava aprender a fazer algo parecido. Agora que sei que é simples, vou mergulhar de vez no PowerShell, não dá pra ficar pra trás dos outros analistas, preciso dominar o básico kkkkk.

 

Os arquivos que enviei não são algo que eu use no dia a dia, foi só como exemplo mesmo. O que eu quero é aprender a criar um "menu" que mostre as opções e abra as pastas correspondentes quando eu clicar nelas, eu vir algo parecido, mas a pessoa fez no python, achei que pudesse aplicar o mesmo conceito no PWS.

  • Curtir 1
Postado

@Angelica Rios o powershell, além de ter todos os scripts batch comum do ms-dos, usa comandos próprios do powershell e também C#.

você também consegue criar formularios, janelas, gráficos, animações e afins usando ele, porém ele é uma linguagem de automação e não foi feito para isso, logo você verá bugs em cima de bugs se tentar fazer algo como uma aplicação nisso.
um projeto relativamente grande com muito uso do powershell é esse aqui

  • Obrigado 1
Postado

Acredito que terá que usar o goto para conseguir criar os menus. Se não me engano fica mais ou menos assim:

 

if key == "f" goto meuMenu1

if key == "d" goto meuMenu2

meuMenu1:

  echo "1 - item1"

  echo "2 - item2"

...

meuMenu2:

  echo "1 - item1"

 

No site da Microsoft tem documentação, basta pesquisar por "referência da linha de comando" ou "command line reference"

  • Obrigado 2
Postado

Fica mais ou menos assim:

@echo off
goto main

:main
cls
echo -----------meu programa---------------
echo 1 - Abrir menu 1
echo 2 - Abrir menu 2
set /p opcao=Digite uma opcao: 
if "%opcao%"=="1" (goto :menu1) else if "%opcao%"=="2" (goto :menu2) else exit

:menu1
cls
echo -----------Menu 1---------------
echo 0 - Retornar
echo 1 - Script 1
echo 2 - Script 2
set /p opcao=Digite uma opcao: 
if "%opcao%" == "1" (explorer c:) else if "%opcao%" == "2" (explorer c:\Users) else if "%opcao%" == "0" (goto :main)

:menu2
cls
echo -----------Menu 2---------------
echo 0 - Retornar
echo 1 - Script 1
echo 2 - Script 2
set /p opcao=Digite uma opcao: 
if "%opcao%" == "0" (goto :main)

 

  • Obrigado 1
Postado

@Jão386 Agora, sim, uma clareza hahaha. Consigo entender melhor agora com esse esqueleto.

 

Eu fiz baseado no .Bat que fiz de instaladores. Que ficou mais ou menos assim:

 

@echo off
cls
@echo ********************************************************************************
@echo *                      Menu Teste                                        *
@echo ********************************************************************************  
@echo.
pause


:menu
echo Pastas disponíveis:
dir /b /ad

set /p escolha="Digite o nome da pasta ou 'sair' para fechar: "

if /i "%escolha%"=="sair" goto end

if exist "%escolha%\" (
        cd "%escolha%"
) else (
        echo Pasta não encontrada. Pressione Enter para continuar...
        pause > nul
    )
    goto menu

    :end
   
@echo **********************************************************************
@echo **********************************************************************
@echo.
pause
exit

 

Executando ele sai assim bem boqueta kkkkk
image.png.f2db8357cbd352d73fdddd3943c290ee.png

 

Mas o seu está mais estruturado e faz mais sentido para ir treinando.

De coração, obrigada pela ajuda. 🫡

Agora o objetivo é fazer um bem mais estruturado e complexo como o coleguinha compartilhou hehehe

  • Curtir 2
Postado

aqui um exemplo básico de como criar uma janela pelo powershell, você copia esse código e salva em um arquivo de texto, renomeia colocando a extensão .ps1

 

# aqui você chama o modulo de formularios e de desenhos do windows
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing

# declarei minha janela (formulario)
$form = New-Object System.Windows.Forms.Form

# digo o texto dela
$form.Text = "Exemplo de janela"

# tamanho dela
$form.Size = New-Object System.Drawing.Size(300,200)

# digo a posição que ela vai ficar
$form.StartPosition = "CenterScreen"

# estilizo ela
$form.FormBorderStyle = 'FixedToolWindow'
$form.TopMost = $true

# você declara quantos botões vai usar, nesse caso eu declarei 3, btn1, btn2 e o botão de fechar
$btn1 = New-Object System.Windows.Forms.Button
$btn2 = New-Object System.Windows.Forms.Button
$btnClose = New-Object System.Windows.Forms.Button

#você define que texto vai ter nos botões
$btn1.Text = "btn1"
$btn2.Text = "btn2"
$btnClose.Text = "Fechar"

# você define o tamanho dos botões, em pixels.
$btn1.Size = New-Object System.Drawing.Size(80,30)
$btn2.Size = New-Object System.Drawing.Size(80,30)
$btnClose.Size = New-Object System.Drawing.Size(80,30)

# você define a licalização dos botões
$btn1.Location = New-Object System.Drawing.Point(30,40)
$btn2.Location = New-Object System.Drawing.Point(150,40)
$btnClose.Location = New-Object System.Drawing.Point(90,100)

# você diz o que um objeto vai fazer, por ex, com add_click diz a ação deles ao clicar.
$btn1.Add_Click({
	# exemplo de ação para exigir uma mensagem em uma caixa de texto
    [System.Windows.Forms.MessageBox]::Show("Você clicou no botão 1!")
})

# criando para o botão 2
$btn2.Add_Click({
    [System.Windows.Forms.MessageBox]::Show("Você clicou no botão 2!")
})

# nesse caso ao clicar no botão close você ordena a janela principal a fechar.
$btnClose.Add_Click({ $form.Close() })



# você insere os botões da sua janela principal
$form.Controls.Add($btn1)
$form.Controls.Add($btn2)
$form.Controls.Add($btnClose)



# depois que tudo é declarado, a ordem final é mostrar a janela form, que é a janela que carrega os botões
[void]$form.ShowDialog()

 

  • Curtir 2
Postado

Só um adendo ao meu código, ao invés de usar vários ifs, poderia por direto goto :menu%opcao%. A única coisa seria ter de checar se a opção é válida.

@Angelica Rios O importante é que funciona, o resto você pode incrementar com o tempo.

 

@Swalls Que legal! E eu que pensava que só com IDEs como Delphi e Visual Basic dava pra criar sistemas...

Talvez dê até pra criar uns joguinhos por aí.

  • Curtir 1
Postado

@Swalls Nossa, praticamente já é preciso ter algum conhecimento em programação. Confesso que, mesmo com as explicações na descrição, fiquei meio confusa com o código e olha que é considerado o "básico" kkk. Acho que o melhor é focar primeiro na lógica de programação e praticar com essas tarefas mais simples, que já funcionam como estímulo. Mas o que realmente me deixa maravilhada é ver a quantidade de conteúdo e material disponível, é muita coisa para estudar e olhando mais a fundo tem bastante projetos feitos com PWS kkk.

https://github.com/dfinke/Tiny-PowerShell-Projects

  • Obrigado 1
  • GabrielLV alterou o título para Como criar menu em PowerShell para acesso rápido a pastas?

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...