Batch-Satti
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Batch-Satti

Você não está conectado. Conecte-se ou registre-se

[DUVIDA]Setar variáveis

5 participantes

Ir para baixo  Mensagem [Página 1 de 1]

1[DUVIDA]Setar variáveis Empty [DUVIDA]Setar variáveis Ter Fev 17, 2009 12:55 am

azothdm



Olá a todos!
Gostaria de saber se é possível colocar em uma variável o diretório onde o bat está sendo executado. A intenção disso, é fazer com que ele compare esse valor com o outro. Exemplo:

Digamos que inicialmente o bat foi instalado em c:/bat

Na inicialização do programa, é feita a verificação se o mesmo encontra-se no diretório original de instalação, c:/bat, colocado na variável, inst no momento da instalação e permanescendo salvo em um arquivo de configuração.

O diretório atual, de execução do bat será colocado em outra variável: atual. Após essas duas variáveis seriam comparadas e se diferirem, o programa se excluirá automaticamente.

O problema está em colocar o diretório atual de execução do programa em uma variável automaticamente.

pelo que verifiquei nos programas aqui criados, acho que isso vai ser molesa pra vocês. Espero me ajudarem

Obrigado

azothdm

2[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Ter Fev 17, 2009 9:38 am

Boss-Head

Boss-Head

exemplo :
salve esse script em quaquer pasta e execute !
depoi crie uma pasta em C:\teste e salve ele dentro e execute !
espero que seja essa sua duvida !

@echo off
if %~d1%~p1%0=="C:\teste\%~n0%~x0" echo você está no diretorio certo&goto sai
echo você está no diretorio errado
pause
exit
:sai
pause

3[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Ter Fev 17, 2009 11:50 pm

Ryokusei Wing

Ryokusei Wing

Não entendi muito bem a dúvida.
Mas tente usar a variável "%cd%".

Ex:

Código:
@echo off
set main_dir=%cd%
Bla
bLa
blA
if "%cd%" neq "%main_dir%" (echo diretório incorreto)

4[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qua Fev 18, 2009 5:48 pm

azothdm



Ryokusei Wing escreveu:Não entendi muito bem a dúvida.
Mas tente usar a variável "%cd%".

Ex:

Código:
@echo off
set main_dir=%cd%
Bla
bLa
blA
if "%cd%" neq "%main_dir%" (echo diretório incorreto)


Olá Ryokusei Wing. Obrigado pela ajuda, não sabia que já existia uma
variável do diretório %cd%. Fiz o programa da seguinte forma:

Código:
@echo off
:: Renomeia o arquivo de configuração e o chama para setar as variáveis
ren conf.gp set.bat
call set.bat

:: Mostra as variáveis só para confirmação
echo. %cd%
echo. %unid%

:: Condição
if "%cd%"=="%unid%" (
  echo.&echo. Executa o programa pois o diretorio esta correto!
  goto fim
  ) ELSE (
  echo.&echo. Nao executa o programa pois o diretorio nao esta correto!
  goto fim
  )

:fim
ren set.bat conf.gp

Obrigado pela ajuda.

Gostaria de agradecer também ao Boss-Head por responder, porém não obtive sucesso ao fazer o que por ele foi sugerio.

Obrigados a todos

azothdm

5[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qua Fev 18, 2009 6:30 pm

Boss-Head

Boss-Head

O set.bat contem a variavel de onde deve ser instalado o programa ?

Só por curisidade roda esse script e veja se ele funciona tambem.
Utilizei o mesmo seu só mudei o tipo de comparação!


@echo off
:: Renomeia o arquivo de configuração e o chama para setar as variáveis
ren conf.gp set.bat
call set.bat

:: Mostra as variáveis só para confirmação
echo. %~d1%~p1%0
echo. "%unid%\%~n0%~x0"

:: Condição
if %~d1%~p1%0=="%unid%\%~n0%~x0" (
echo.&echo. Executa o programa pois o diretorio esta correto!
goto fim
) ELSE (
echo.&echo. Nao executa o programa pois o diretorio nao esta correto!
goto fim
)

:fim
ren set.bat conf.gp
pause

6[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qua Fev 18, 2009 7:59 pm

azothdm



Olá Boss-Head

No momento continuo fazendo o programa, então ainda possuo carregada todos as variáveis de set.bat. Utilizando os comandos que você passou não consegui executar a tarefa. Fiz o seguinte:

coloquei
echo. %~d1%~p1%0
echo. "%unid%\%~n0%~x0"

um de cada vez na linha de comendo do cmd, e ele não mostrou os diretórios correspondentes para:
echo. %cd%
echo. %unid%

executando a condição if %~d1%~p1%0=="%unid%\%~n0%~x0" não haveria resultado, uma vez que ele não consegui testar a condição. Poderia me explicar o por que dos valores "%~d1%~p1%0" e "%~n0%~x0"?

Grato

azothdm

7[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qua Fev 18, 2009 8:32 pm

Boss-Head

Boss-Head

Eu utilizo esse tipo de comando a algum tempo !
então para mim é familiar !
Um dos motivos de trabalhar com ele é esse !
[Tens de ter uma conta e sessão iniciada para poderes visualizar este link]

O outro é esse
Código:
@echo off
set cd=joaquim
ren conf.gp set.bat
call set.bat


echo. %cd%
echo. %unid%


if "%cd%"=="%unid%" (
  echo.&echo. Executa o programa pois o diretorio esta correto!
  goto fim
  ) ELSE (
  echo.&echo. Nao executa o programa pois o diretorio nao esta correto!
  goto fim
  )

:fim
ren set.bat conf.gp
pause
Ou esse
Código:
@echo off
ren conf.gp set.bat
call set.bat
cd c:\
echo. %cd%
echo. %unid%
if "%cd%"=="%unid%" (
  echo.&echo. Executa o programa pois o diretorio esta correto!
  goto fim
  ) ELSE (
  echo.&echo. Nao executa o programa pois o diretorio nao esta correto!
  goto fim
  )
:fim
ren set.bat conf.gp
pause

8[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qua Fev 18, 2009 9:28 pm

Boss-Head

Boss-Head

Os comandos que postei são visiveis somente dentro de um .bat
portanto salve esse script abaixo com qualquernome.bat e execute ele !
E tenho certeza que irá entender as variáveis descritas nele !
%0 faz referencia a sí próprio %1 faz referência a outro
Estou postando não só para você más pra todos que querem aprender ,
sei que seu script já está funcionando, más só queria concluir a teoria .
Os exemplos que citei acima de possiveis problemas eu já me deparei com eles .

Código:
@echo off
echo você está vendo na tela os atributos e
echo caminho do arquivo atual
echo.
echo Nome completo entre aspas---: %0
echo Caminho arquivo s/ aspas----: %~f0
echo Disco-----------------------: %~d0
echo Somente caminho-------------: %~p0
echo Nome------------------------: %~n0
echo Extensao--------------------: %~x0
echo Caminho abreviado-----------: %~s0
echo Atributos-------------------: %~a0
echo Criado em-------------------: %~t0
echo Tamanho---------------------: %~z0
pause

echo Agora vamos chamar um outro arquivo para ver seus atributos
echo.
echo Digite o nome e caminho de outro arquivo pode ser .exe etc.
echo.
set /p arquivo= Ou arraste e solte ele aqui
call :teste %arquivo%
:teste
echo.
echo Nome completo entre aspas---: %1
echo Caminho arquivo s/ aspas----: %~f1
echo Disco-----------------------: %~d1
echo Somente caminho-------------: %~p1
echo Nome------------------------: %~n1
echo Extensao--------------------: %~x1
echo Caminho abreviado-----------: %~s1
echo Atributos-------------------: %~a1
echo Criado em-------------------: %~t1
echo Tamanho---------------------: %~z1
pause

9[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qua Fev 18, 2009 10:12 pm

azothdm



Olá Boss-Head

Muito útil os comandos apresentados por você. Agradeço muito...

Fiz e agora deu certo...

Grado

azothdm

10[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Qui Ago 19, 2010 8:47 pm

Norton



Sei que o tópico é antigo mas está perfeito para minha pergunta.
Tem como usar essas pegar uma dessas propriedades (ex: somente caminho) diretamente na variavel? Algo como %variavel%%~p1?

Já sei fazer com call :teste %variavel% mas queria saber se tem um meio mais prático ^^

Grato.

11[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Dom Ago 22, 2010 11:35 am

C-Com

C-Com

Tem como usar essas pegar uma dessas propriedades (ex: somente caminho) diretamente na variavel? Algo como %variavel%%~p1?

Diretamente eu acredito que não... mas você poderia, alternativamente, usar um for pra transferir o corpo da string que contém o nome. Por exemplo:

Código:
for /f "delims=*" %a in ("%arquivo%") do echo %~pa

12[DUVIDA]Setar variáveis Empty Re: [DUVIDA]Setar variáveis Dom Ago 22, 2010 2:35 pm

Norton



Valeu pela resposta =D

Conteúdo patrocinado



Ir para o topo  Mensagem [Página 1 de 1]

Permissões neste sub-fórum
Não podes responder a tópicos