| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 01:40:13
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
Olá pessoALL!
Fiz um arquivinho de lote (.bat) simples aqui pro meu cliente apenas clicar e ele fazer o backup.
Eu queria que sempre o nome do arquivo gerado pelo backup fosse algo como:
bkp_<data>_<hora>.bkp
Então fucei para encontrar como pegar a data e hora do sistema e usar isso no DOS. Por fim, achei a dica este link (http://forum.abril.com.br/info/forum.php?topico=115818).
Só que aqui em ksa simplesmente não funciona nem o mais simples dos exemplos descrito! Tô achando pra lá de estranho pq no micro da empresa eu lembro que testei e funcionou!
Alguém tem alguma idéia do que pode ser? Ou sabe de algum outro jeito de fazer isso?
Máquina de casa:
XP Professional
Versão 2002
Service Pack 2
Máquina da empresa:
<assim que eu chegar na empresa amanhã cedo eu olho e coloco aqui, mas é algo parecido se não for exatamente o mesmo>
Grata,
Renata
|
[]'s, Renata |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 01:59:25
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
O meu Windows XP tem a mesma configuração que a sua, basta criar um arquivo com a extensão ".bat" e pronto.
Salve como "exemplo.bat" e basta chamar o comando "exemplo" para exibir na tela o resultado.
Boa sorte,
Douglas
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 11:01:41
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Só completando o que o Douglas disse.
Se em um exemplo (que você digita na linha de comando) aparece algo como "%DATE%", para usar em uma batch você precisa duplicar o %. Coisas do MS-DOS.
No exemplo:
%date:~4,2%
Na batch:
%date:~4,2%%
É por isso que o Douglas duplicou todos os % que apareciam no exemplo que você citou.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 11:46:53
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
Amigos, obrigada pela ajuda, mas ainda estou com problemas.
Veja o trecho do meu arquivo .bat que deve fazer o que pedi:
Quando executo esse .bat, ele dá a seguinte mensagem de erro:
A sintaxe do comando está incorreta
Então eu fiz uns testes e descobri que se eu tirar do comando a parte que deve pegar a hora, ou seja, se eu executar desta forma:
FUNCIONA! Então o problema deve estar nos parâmetros pra pegar o formato da hora...
Alguma idéia de como seria a forma correta? Onde eu posso consultar quais os parâmetros possíveis?! Ainda não entendi a lógica pra formatar a data e a hora que ele usa...
Grata,
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 13:23:33
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
O problema foi a hora atual do sistema, provavelmente você executou esse batch antes das 10 não é ?
Ele interpretou como " 9" (espaço antes do 9) e ficou mais ou menos assim o seu comando final
Com esse espaço em branco antes do "9" rola o problema descrito por você, um workaround para isso seria colocar um zero antes da hora atual, consequentemente :
Esse tratamento da data/hora seria mais ou menos assim :
Se você fizer "echo %date%"
Retornaria por exemplo : qua 04/18/2007
Para obter o 04 você faria "%date:~4,2%", 4 porque é a quarta posição e 2 é a quantidade de caracteres a partir da quarta posição, basicamente igual a substring do Java.
Para consultar os parametros disponiveis basta escrever "set" no prompt do DOS, ou então para facilitar a depuração coloque "echo %variavel%" para imprimir os valores.
Não sou expert em batch, mas espero que isso tenha lhe ajudado em algo
[]s
Douglas
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 16:57:43
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
Douglas, mais uma vez obrigada por estar me ajudando... infelizmente ainda tô fazendo alguma caquinha.... Veja o meu .bat está abaixo:
Qdo executo, a mensagem de erro é:
grt foi inexperado neste momento
O que será agora?
Ah! E agora entendi como funciona pra pegar os pedacinhos da data,,, eu não estava entendendo pq não tinha percebido que vinha escrito o nome do dia da semana antes e então começava a contar na posição errada...
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 19:10:04
|
douglasfs
JavaEvangelist
![[Avatar]](/images/avatar/dc6a6489640ca02b0d42dabeb8e46bb7.png)
Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline
|
Na linha "if %hora% grt 9 goto CONTINUA", é só substituir o "grt" por "gtr"
Boa sorte,
Douglas
|
SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 19:23:24
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Não é por nada não, mas será que você não poderia instalar no seu cliente o programa Perl ou Python?
Ambos são mais adequados que o DOS para executar scripts que contenham esse tipo de lógica. (Você já viu como é que o fato de usar "%%DATE%% já deu problemas )
Alternativamente, você pode aprender JScript ou VBScript, se não puder fazer esse tipo de instalação. Aí você pode criar um script com extensão "js" ou "vbs" e executar esse script com o comando:
cscript seuprograma.js
O cscript, também conhecido por "Windows Script Host" é um programa que interpreta scripts JScript ou VBScript e normalmente já vem instalado no Windows. (OK, pode ser que no seu cliente o "Windows Script Host" tenha sido desabilitado ou desinstalado por motivos de segurança. Se for isso, então instale o Perl ou o Python, que podem ser baixados de http://www.activestate.com )
(Eu tenho uma certa ojeriza por batchs, embora tenha já escrito muitas delas, porque você é obrigado a usar "goto". "Goto" para mim é um sobrenome de japonês, não deveria ser usado em programação do dia-a-dia.)
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 18/04/2007 20:01:31
|
RenataFA
Virtual Machine Man
![[Avatar]](/images/avatar/c05c903e3d997added79518f0e850026.jpg)
Membro desde: 24/08/2006 08:15:10
Mensagens: 698
Offline
|
Douglas!!! Que vergonha!!!
Eu olhei tanto e não vi isso!!!
Muito obrigada pela ajuda e pela paciência tb.!!!!
Então Thingol, com certeza devem existir ferramentas superiores para fazer e executar scripts,,, mas no caso, é um cliente pequeno, um único computador, um sisteminha pequeno feito em delphi com BD em FB. Fiz o .bat (que eu sempre usei e que nunca me deixou na mão)... a intenção é apenas que da próxima vez que der pau e não tiver bkp eu possa dizer: "Não tem pq vcs não fizeram, pq é só clicar aqui que ele faz o bkp..."
Então de fato foi suficiente... legal saber que existem outras coisas pra isso,,, se eu precisar não vou me esquecer das dicas... mas não acuse tanto o bash,,, não deu problema nenhum com o %date%, o problema era a minha burrice...rs...
T+ meninos, e obrigada mais uma vez!
|
[]'s, Renata |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/09/2007 11:21:04
|
LucianoSturza
What is classpath?
![[Avatar]](/images/avatar/32e22c26cece29777049a84adf05f465.png)
Membro desde: 19/09/2007 10:55:30
Mensagens: 5
Localização: São vicente do Sul
Offline
|
estou tentando criar aki um batch para criar o nome do arquivo com data e hora atual, mas está gerando espaços entre a data e a hora, usei a mesma sintaxe.
F:\>teste2
'echooff' não é reconhecido como um comando interno
ou externo, um programa operável ou um arquivo em lotes.
F:\>set var1=bkp
F:\>set var2=_
F:\>set var3=.gbk
F:\>set hora_atual=11
F:\>rem gtr significa maior
F:\>if 11 GTR 9 goto FINALIZA
F:\>echo finalizando
finalizando
F:\>set resultado=190907_ 11 1842
F:\>mixmp3 f:\190907_ 11 1842 .mp3
MP3-encoder of signal from soundcard. Version 1.0.7, 13.11.2000
(c) Dmitry Lesnikov (dlesnikov@mail.ru)
MP3-engine: Lame
* Invalid argument f:\190907_.
* Execute mixmp3 -rus to get russian help
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/09/2007 11:25:47
|
LucianoSturza
What is classpath?
![[Avatar]](/images/avatar/32e22c26cece29777049a84adf05f465.png)
Membro desde: 19/09/2007 10:55:30
Mensagens: 5
Localização: São vicente do Sul
Offline
|
Estou usando este código:
@echo off
set var1=bkp
set var2=_
set var3=.gbk
set hora_atual=%time:~0,2%
rem gtr significa maior
if %hora_atual% gtr 9 goto FINALIZA
echo tratando hora
set hora_atual=0%time:~1,1%
:FINALIZA
echo finalizando
set resultado=%date:~4,2%%date:~7,2%%date:~12,2%%var2%%hora_atual%%time:~3,2%%time:~6,2%
mixmp3 f:\%resultado%.mp3
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/09/2007 17:17:38
|
LucianoSturza
What is classpath?
![[Avatar]](/images/avatar/32e22c26cece29777049a84adf05f465.png)
Membro desde: 19/09/2007 10:55:30
Mensagens: 5
Localização: São vicente do Sul
Offline
|
Aguardo uma ajuda, a idéia é para fazer gravação de todo audio que entrar pela placa de som, mas no momento que o micro for desligado e religado criar arquivos com nomes diferentes, para não sobescrever o anterior. De i´nicio tive problemas com a hora antes das 10:00 e agora usei a dica do douglasfs, mas tá gerando espaços. e não consegui ainda resolver.
Grato desde já.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 03/06/2008 19:12:58
|
LucianoSturza
What is classpath?
![[Avatar]](/images/avatar/32e22c26cece29777049a84adf05f465.png)
Membro desde: 19/09/2007 10:55:30
Mensagens: 5
Localização: São vicente do Sul
Offline
|
Consegui, descobrir, depois de muito tempo, no declarar as variáveis, não se pode deixar espaços, senão estes serão escritos quando vc chamar ela.
"set var1=bkp"
"set var2=_"aqui não pode ter espaço para o #enter# "
"set var3=.gbk
Por este motivo se criava o espaço ao montar o nome.
|
|
|
 |
|
|