Bruno Augusto 417 Denunciar post Postado Agosto 10, 2011 Boas, Nem sei se DOS é linguagem de programação xD Tem como fazer um programinha simples, que peça pro usuário digitar alguma coisa e que depois execute alguns comandos, internamente programados, mas que use esse valor do usuário. A título de exemplo, fica aquelas infames janelinhas JavaScript em que se pede o nome do visitante para escrever em tela "Olá fulano". Por enquanto é só isso, mas se mais pra frente eu quiser uma GUI para o aplicativo o qual esse batch estaria operando, qual a linguagem menos trabalhosa para isso? Lembrando que não vou me especializar na linguagem seria só para, por exemplo: aplicativo --option value Poder ser visual: +---------------+ | Opção: | | | | Valor #1 [ ] | | Valor #2 |x] | | Valor #3 [ ] | +---------------+ Pura preguiça de ficar escrevendo tudo no DOS... Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Agosto 11, 2011 simplizinha assim sera q o vbscript n te ajuda? []s Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Agosto 13, 2011 De repente... Há uns... 15 anos atrás eu brinquei um pouquinho com VB6 mas... nada a ver né? Compartilhar este post Link para o post Compartilhar em outros sites
JCMais 75 Denunciar post Postado Agosto 24, 2011 Larga o DOS! :P Porque o futuro da CLI do Windows, é outra, e ela se chama PowerShell. Estudem sobre o assunto e verão sobre o que estou falando. Para quem tem Windows Seven, já pode verificar, digite isto no executar: powershell_ise e apertem f1 para terem um noção do que se trata. ;) Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Agosto 24, 2011 Ixi... Muita coisa pro que eu queria fazer. :P Nem rola aprender uma linguagem inteira só pra evitar digitar uma grande linha no DOS. Vale mais a pena salvar essa linha no Bloco de Notas e coloar no DOS via mouse. Obs.: O aplicativo que se executa via DOS, na verdade é um script Perl. Ajuda em alguma coisa? Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Dezembro 29, 2011 Vai parecer meio estranho, mas e se você cria-se um CMD (BAT) para isso Veja esse "programinha" em CMD que fiz: @echo off title Programa em CMD - %DATE% goto :menu :menu cls echo Escolha um op‡ao: echo. echo - Op‡ao "1": Chamar o execultar echo - Op‡ao "2": Chamar o teste echo - Op‡ao "c": fechar echo. set /P opcao=Qual a op‡ao que voce deseja? if /I %opcao%==1 ( set comando=Hello goto execultar ) else if /I %opcao%==2 ( goto teste ) else if /I %opcao%==c ( goto fechar ) else ( cls echo Op‡ao inv lida, aperte "Enter" para voltar ao menu pause goto :menu ) :execultar cls echo %comando% start meusoftware --%comando% pause goto menu :teste cls echo teste start meusoftware --teste pause goto menu Ou tem que ter mesmo uma "GUI" ? Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Dezembro 29, 2011 Uia, esse já tá bem maneiro ^_^ Assim eu não preciso ficar toda santa hora navegando nos diretórios até achar o script (é, é um script Perl) pra rodar. Seguinte, esse script aceita alguns argumentos. Onde (ou como já que não sei nada :yay: ) eu modificaria para permitir a passagem deles? Esses argumentos são no formato -LETRA VALOR, sendo LETRA uma única letra mesmo (-s, -v, -x...) Seria meio que uma pergunta intermediária antes do start, se fosse respondido alguma coisa (a lista de argumentos), ele gravaria em alguma variável (se é que Batch tem isso) e depois usaria ela. Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Dezembro 29, 2011 Tente assim: @echo off title Programa em CMD - %DATE% goto :menu :menu cls echo Escolha um op‡ao: echo. echo - Op‡ao "1": Chamar o "comando 1" echo - Op‡ao "2": Chamar o "comando 2" echo - Op‡ao "3": Chamar o "comando 3" echo - Op‡ao "c": fechar echo. set /P opcao=Qual a op‡ao que voce deseja? if /I %opcao%==1 ( cls start seusoftware.exe --comando1 pause goto :menu ) else if /I %opcao%==2 ( cls start seusoftware.exe --comando2 pause goto :menu ) else if /I %opcao%==3 ( cls start seusoftware.exe --comando3 pause goto :menu ) else if /I %opcao%==c ( goto fechar ) else ( cls echo Op‡ao inv lida, aperte "Enter" para voltar ao menu pause goto :menu ) Entendendo: cls //Limpa a tela start seusoftware.exe --comando1 //Chama o programa com a linha de comando, sem travar pause //pausa para não voltar ao menu, sem o usuário requisitar goto :menu //Se apertar qualquer tecla na pausa ele volta ao menu Isto é a fork para o valor definido em SET: if /I %opcao%==1 ( Pode-se fazer assim, a pessoa vai te que escrever a palavra "testando", quando solicitado: if /I %opcao%==testando ( Está área é apenas visual e nada afeta as variáveis. echo - Op‡ao "1": Chamar o "comando 1" echo - Op‡ao "2": Chamar o "comando 2" echo - Op‡ao "3": Chamar o "comando 3" echo - Op‡ao "c": fechar Quebra de linhas, cada "echo." quebra uma linha na tela: echo. echo. echo. echo. Se tiver problemas ao passar parâmetros, tente fazer assim, as vezes espaços não funcionam como esperamos: start SOFTWARE "--PARÂMETRO" Ou start "SOFTWARE --PARÂMETRO" Pode-se executar sem START também, porem a tela do CMD fica travada e só destrava ao finalizar o seu SOFTWARE(no seu caso o SHELL): cls seusoftware.exe --comando3 pause goto :menu Espero que ajude, um feliz ano novo :) Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Dezembro 29, 2011 Ajuda, ajuda sim. Mas Batch não tem variáveis? Porque a intenção desse complemento dos parâmetros é justamente usar um valor dado pelo usuário. No caso desse script Perl, ele vai trabalhar com uma URL. Ele mesmo não sabe qual é a URL, pois esta será dada pelo usuário. Daí o comando ficaria: perl application -f URL Sacou? E sobre a tela "congelar", seria a própria tela do DOS mesmo, certo. Se o script já roda no DOS, então tanto faz, não? Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Dezembro 29, 2011 Para setar as variaveis: @echo off title Programa em CMD - %DATE% goto :menu :menu cls echo Escolha um op‡ao: echo. set /P variavel_url=Qual a URL? cls start perl application -f %variavel_url% pause goto :menu Sobre o congelamento, se fizer assim (removi o start): @echo off title Programa em CMD - %DATE% goto :menu :menu cls echo Escolha um op‡ao: echo. set /P variavel_url=Qual a URL? cls perl application -f %variavel_url% pause goto :menu Ele trava o CMD apenas, enquanto o perl não concluir a execução ou se for um aplicativo com GUI, não fechar a "Janela" do aplicativo o CMD vai ficar travado, evitando que você deixe de concluir a tarefa do programa(no seu caso o Perl). Espero que ajude. [editado] Não sei como funciona o Pearl, mas se ele requirir HTTP, faça assim: perl application -f http://%variavel_url% Pois evita do usuário quer que digitar o http: no CMD. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Dezembro 30, 2011 Beleza, acredito que sejam as últimas perguntas. Esse script (o qual não fui eu quem desenvolveu) obriga que ao menos o -f esteja presente. Se na parte do script que pergunta a URL eu ou quem for usar teclar <enter> sem informar nada, o script vai acusar erro, lógico. Pra verificar se algo foi informado, depois do <enter>, bastaria: if /I %variavel%=="" { } Daí eu posso mostrar minha mensagem personalizada. ^_^ Outra coisa. Como eu disse existem outros parâmetros. Se eu criar um item no menu chamado, por exemplo, Configurações, e fazer o mesmo esquema de variáveis (criando-as) funcionaria, certo? Não tem nada como escopo que as variáveis de alto nível tem, né? Terceiro (essa surgiu agora). Anos atrás, quando precisei comprimir algo com taxas de compressão extremas, encontrei um tal de UHARC, que trabalhava pelo DOS. Tinha dezenas de parâmetros e eu fui testando um por um até obter a melhor compressão possível. Mas se para compactar era trabalhoso, para descompactar também era. Então eu criei um arquivinho para fazer esse tipo de procedimento, mas sem variáveis, menus nem nada. Porém os textos acentuados ficavam bagunçados. Dá pra resolver esse probleminha de charset? Compartilhar este post Link para o post Compartilhar em outros sites
brcontainer 16 Denunciar post Postado Dezembro 30, 2011 Beleza, acredito que sejam as últimas perguntas. Esse script (o qual não fui eu quem desenvolveu) obriga que ao menos o -f esteja presente. Se na parte do script que pergunta a URL eu ou quem for usar teclar <enter> sem informar nada, o script vai acusar erro, lógico. Pra verificar se algo foi informado, depois do <enter>, bastaria: if /I %variavel%=="" { } Daí eu posso mostrar minha mensagem personalizada. ^_^ Faça assim, se for execultar pelo CMD.exe, pois pelo CMD.EXE " ou aspas é um string para as ifs, então colocamos aspas em ambas comparações: if /I '%variavel_url%'=='' ( ) Havia esquecido de falar as FORKS geralmente exige '' ou aspas unicas da maneira que fiz no CODE acima. Outra coisa. Como eu disse existem outros parâmetros. Se eu criar um item no menu chamado, por exemplo, Configurações, e fazer o mesmo esquema de variáveis (criando-as) funcionaria, certo? Não tem nada como escopo que as variáveis de alto nível tem, né? Da para criar vários menus, menus dentro de menus de maneira ilimitada, agora não entendi exatamente o que você quer com "escopo" , se for algo como Classes ou namespace eu nunca vi =/ o máximo pelo que vi é o GOTO (acho que se chamam CICLOS ou CICLE) Dá pra resolver esse probleminha de charset? Somente alguns acentos funcionam, eis a lista, em cima para CMD e e baixo os originais, infelizmente talvez ao enviar para o forum de erro na codificação, qualquer coisa me mande seu e-mail por MP e te mando o CMD com os acentos: @echo off echo Para CMD: echo … Æ ƒ ‚ Š ¢ • ä “ £ — – ¡ ‹ µ · Ô à • å â ê š š Ö Þ Ø ‡ € echo. echo Originais: echo á à ã â é è ó ò õ ô ú ù û ü í ì ï Á À É È Ó ò Õ Ô Û Ü Ü Í Ì Ï ç Ç pause Fiz mais ou menos como ficaria o seu CMD: @echo off goto :menu :menu cls echo Digite um endere‡o ou escolha uma op‡Æo: echo. echo Digite 1 para Opcao A echo Digite 2 para Opcao A echo. set /P VARIAVEL=Qual a URL ou comando? if /I %VARIAVEL%'=='' ( goto :erros ) else if /I '%VARIAVEL%'=='1' ( goto :comandoA ) else if /I '%VARIAVEL%'=='2' ( goto :comandoB ) else ( goto :comum ) :erros cls echo Comando indefinido pause goto :menu :comum cls echo perl application -f %VARIAVEL% pause goto :menu :comandoA cls echo perl application -f comando pronto a pause goto :menu :comandoB cls echo perl application -f comando pronto b pause goto :menu Feliz ano novo e boa sorte. Compartilhar este post Link para o post Compartilhar em outros sites
Bruno Augusto 417 Denunciar post Postado Dezembro 30, 2011 Ah tá. Saquei. Vou montar amanhã, então.. Quanto à escopo seria o "problema" que se tem com funções por exemplo, de variáveis de for da função serem uma coisa, e de dentro delas, outra. Achei que cada "página" do menu tinha escopo próprio, daí o que eu definisse na "página" 1, poderia se perder ao usar na "página" 3. Mas já que não tem isso, beleza. Compartilhar este post Link para o post Compartilhar em outros sites
Guilherme_90 33 Denunciar post Postado Dezembro 31, 2011 Larga o DOS! :P Porque o futuro da CLI do Windows, é outra, e ela se chama PowerShell. Estudem sobre o assunto e verão sobre o que estou falando. Para quem tem Windows Seven, já pode verificar, digite isto no executar: powershell_ise e apertem f1 para terem um noção do que se trata. ;) Brother, achei interessante esse PowerShell, porém dá uma luz. Qual a finalidade de usá-lo? Compartilhar este post Link para o post Compartilhar em outros sites