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

Comando para mostrar pasta atual

2 participantes

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

1Comando para mostrar pasta atual Empty Comando para mostrar pasta atual Dom Mar 15, 2015 11:01 am

zenk



Bom dia pessoal, estou com uma dúvida.
Seguinte estou com um script pronto onde é gerado um arquivo dentro de uma determinada pasta.
O script inclusive entra nessa pasta para e cria o arquivo.
Minha dúvida é a seguinte. Preciso que esse arquivo contenha o mesmo nome da pasta. Lembrando que a pasta contém 2 ou mais palavras.
Existe algum comando que eu tenha o retorno somente da pasta que estou no momento?
Minha ideia seria criar uma variável contendo o valor de saída desse comando, para poder usá-la na nomeação do arquivo.

Desde já agradeço. Caso tenham alguma ideia será muito bem vinda também rsrs. Abraço

2Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Seg Mar 16, 2015 5:41 am

André Luiz

André Luiz

Olá zenk, "Sim e não" 'kkkkk
É o seguinte não é difícil porém também não é fácil, mas é bem simples olha o exemplo a abaixo.
Código:
@echo off
Set Folder="%CD%"
Set VarEsc=0
:Back
Set/a VarEsc+=1
Set TrueFalse=0
For /f "Tokens=%VarEsc% Delims=\" %%i in ('@echo.%Folder%') do Set TrueFalse=1
If "%TrueFalse%"=="1" ( Goto Back ) Else ( Goto Rename )
:Rename
Set/a VarEsc-=1
For /f "Tokens=%VarEsc% Delims=\" %%i in ('@echo.%Folder%') do Set Rename=%%i
Set Rename=%Rename:"=%
Echo.%Rename%
Pause>nul


Bom essa ai é a lógica Mas agora vamos à uma breve explicação sobre:
Código:
::Bom nessa parte a baixo é apenas as declarações de variáveis
@echo off
Set Folder="%CD%"
Set VarEsc=0
Código:
::Bom essa parte abaixo ele faz o seguinte ele verefica até que ponto
::existe o símbolo "\", e esta variável "%TrueFalse%" ela trabalha com
::com o próprio bug do "For"(Acho que é um bug!) que quando não houver
::resultado no conteúdo na "%%i" então ele não apresenta nada!!
::Ai usei isso ao meu favor se caso existir mas algum conteúdo ele então
::Ele determinar a variável "%TrueFalse%" igual 1 caso contrário ele vai
::Ficar com o resultado anterior definido e se ele não estiver com
::resultado 1 então quer dizer que ele ainda não acabou.
::Então concluindo para ele passar dá quela condicional ali ele
::primeiro tem que ter o valor 0.
:Back
Set/a VarEsc+=1 ::Variável escalável, sempre vai ficar somando com + 1
Set TrueFalse=0 ::BugViciante :P
For /f "Tokens=%VarEsc% Delims=\" %%i in ('@echo.%Folder%') do Set TrueFalse=1
If "%TrueFalse%"=="1" ( Goto Back ) Else ( Goto Rename
Código:
::Essa parte de baixo já é o fim da lógica.
:Rename
Set/a VarEsc-=1 ::Aqui ele vai diminuir - 1, por que? Porquê quando ele chega até aqui pelo goto ele chega com um valor de token vásio.
For /f "Tokens=%VarEsc% Delims=\" %%i in ('@echo.%Folder%') do Set Rename=%%i ::Bom aqui ele está apenas direcionando o resultado à uma variável.
Set Rename=%Rename:"=% ::Aqui ele está tirando as aspas ao redor da variável.
Echo.%Rename%
Pause>nul

Bom é isso eu espero te ajudado você teste essa lógica e depois me diga no que resultou tudo isso!
Fica com Deus e até a próxima...

3Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Seg Mar 16, 2015 9:48 am

zenk



Fala André, primeiro muito obrigado pelo suporte.
Caramba, que coisa "complicada" em?! rsrsrs
Amigo, funcionou em parte. Criei um script só com o comando que vc me passou e no final dei um mkdir "%rename%" (somente com as aspas foi criada uma pasta com o nome completo).

Mas ainda não consegui fazer funcionar com o propósito devido rsrs, estou gerando arquivos .mp3 e o mesmo quando é gerado aparece apenas o segundo nome da pasta.

4Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Seg Mar 16, 2015 12:36 pm

André Luiz

André Luiz

Olá Zenk, primeiramente me desculpe pela burrice a qual eu passei para você vou explicar porquê!
Espero que ninguém tenha visto esse meu post além de você! 'kkkkkkkkkkkkk Very Happy.
Tipo esse código ai tem 14 linha para fazer o que você me pediu é preciso apenas 1 linhas ai vem a pergunta, como isso jovem?

Faz tempo que não mexo no cmd, então me esqueci varias coisas principalmente um comando bem simples no "For"
Mas pelo menos você pode estudar algumas coisas da quele meu código acima, mas agora deixando à premissa de lado, vou mostrar a você como se faz em apenas 1 linha.
Código:
For /f "delims=" %%i in ('@echo."%CD%"') do Set Rename="%~ni"

É o seguinte esse "~n" que vem antes do "i" ele é uma expansão de variável saiba os outros tipos de expansão usando "For/?".
Agora pode dizer é de se dá vergonha 'kkkk de 14 linhas cair para 1 linha Sad.

E em questão do seu propósito eu não entendi direito, você pode explicar mais uma vez?

5Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Seg Mar 16, 2015 12:45 pm

zenk



hahahahaha Então André, esse código de 1 linha eu tenho aqui, mas como não deu certo eu vim pedi ajuda, quando vi seu código logo pensei "Agora está explicado porque o meu não funciona, só tem 1 linha" kkkkkkkk
Mas enfim, burrice minha pensar isso rsrs.
Vamos lá guerreiro, ACHO que o problema está no ffmpeg que estou usando p/ gerar esses arquivos, mas como eu disse...apenas acho rs.
Abaixo está o comando final que uso p/ gerar o arquivo, lembrando que há um bloco de comando antes disso tudo:
Código:
set data=%date:~0,2%-%date:~3,2%
set tempo=%time:~0,2%.%time:~3,2%.%time:~6,2%

for /f "delims=\" %%a in ("%cd%") do set CurrentDirName=%%~nxa
set name=%CurrentDirNam

C:\DATACLIP\SISTEMA\script\ffmpeg\ffmpeg\ffmpeg.exe -i %url% %ffmpeg_opt% -f segment -segment_time 600 -

segment_format mp3 ""%date%"-"%tempo%"-"%name%"-"%RANDOM%"-%%03d.mp3"

6Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Seg Mar 16, 2015 12:59 pm

André Luiz

André Luiz

Bom jovem de acordo com o que eu vi ai no seu código, não há nada de errado eu acho, mas faz o seguinte debulga o teu código para debulga o código caso não saiba é apenas retirara ou então comentar a o "@echo off"  que ficaria assim "::@echo off"
 e mais executa o teu código direto do cmd.exe.
ex:

[Tens de ter uma conta e sessão iniciada para poderes visualizar esta imagem]

Tipo isso ai, assim você vai poder enxergar o que se código está fazendo que não deveria está fazendo! faça isso e depois me diga no que resultou!
Até mais...

7Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Ter Mar 17, 2015 11:26 am

zenk



Fala amigo, vamos lá...notei algumas coisas.
Primeiro na hora de colocar o nome há isso: %%03d
Isso serve para ele gerar números em ordem de até 3 casas decimais.

Quando crio a variável para o nome da pasta e coloco no local do nome ""%nome%"-%%03d.mp3" ao invés de gerar o nome_completo_da_pasta-000.mp3 (001,002,003 e assim por diante) ele gera somente o segundo_nome_da_pasta-%03d.mp3
Por exemplo, a pasta chamada Audios Antigos, o arquivo fica Antigos-%03d.mp3
Interessante ressaltar que eu tenho 2 variáveis de data e horário e quando coloco p/ aparecer no nome, elas funcionam normalmente inclusive aparece os 3 números gerados pelo %%03d.

Segundo, quando tiro o %%03d da nomeação o arquivo não é gerado..

8Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Ter Mar 17, 2015 12:15 pm

zenk



Amigo, consegui.
Porém, tive que por o nome da pasta unido por um _   rsrsrs
Parece que ele não reconhece o espaço entre os nomes. Se houver um meio de fazer isso seria muito bom, podemos até fazer uns testes se você tiver paciência e tempo p/ me ajudar kkkk
mas por hora foi resolvido...Muito obrigado pela ajuda amigo!!

9Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Ter Mar 17, 2015 12:37 pm

André Luiz

André Luiz

Olá Zenk, fico feliz que tenha conseguido mas de acordo com que eu vi, eu acho, apenas acho!! que pode ser falta de uma simples aspas 'kkkkk
Porquê você falou que quando colocou o "_" uniu os nomes, se você digita "Md teste 1" ele vai criar uma pasta com nome teste e outra com nome 1, mas se você colocar "Md teste_1" ele vai criar um pasta com nome teste_1, mas se você colocar "Md "teste 1""
Ai então ele irá criar uma pasta com o nome de "teste 1"
Mas o porquê dele pegar o ultimo nome e não o primeiro eu não sei, mas não importa mais já que agora ele funciona.

Assim eu estou em um projeto agora! Mas nós podemos olhar o seu e quando terminarmos vamos para o meu, se você se quiser temos um acordo!? Laughing

10Comando para mostrar pasta atual Empty Re: Comando para mostrar pasta atual Ter Mar 17, 2015 3:30 pm

zenk



Então, já botei tantas aspas nisso aqui cara...hahahahahaha
Poxa André, eu topo numa boa!!! Ainda sou iniciante em programação, entendo apenas da lógica rsrs..mas com certeza eu toparia tentar te ajudar sim, me passa um MP com seu face, te adiciono e te ajudo lá, ou por aqui msm rsrs

Cara, agora tive uma outra situação...olha só. Esse arquivo ele está sendo executado pelo gerenciador de tarefas do windows, ele para só 00:10 mas volta automaticamente, não posso ter cortes nesses arquivos.
A grande questão é a seguinte. meus arquivos estão ficando assim:

17-03 - AUDIO_FEITO - 15:10:10 - 000
17-03 - AUDIO_FEITO - 15:10:10 - 001
17-03 - AUDIO_FEITO - 15:10:10 - 002
17-03 - AUDIO_FEITO - 15:10:10 - 003
17-03 - AUDIO_FEITO - 15:10:10 - 004
17-03 - AUDIO_FEITO - 15:10:10 - 005
17-03 - AUDIO_FEITO - 15:10:10 - 006
17-03 - AUDIO_FEITO - 15:10:10 - 007

Eu só consigo fazer a hora certa aparecer quando começo a executar a tarefa no agendador.

Na linha de comando do arquivo, vc pode perceber q eu fiz um temporizador de 600 segundos. a cada 10 min esse arquivo é cortado e outro já começa a ser gerado em sequência. Uso para gravar aulas online por stream.
A cada 10 min ele corta, começa a gerar outro, mas o nome do arquivo novo não aparece com o horário que ele voltou a ser gerado...entendeu? ficou meio confuso né? kkkk

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