1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Problema .BAT

Discussão em 'Programação' iniciada por Cikaybe, 12 de Novembro de 2007. (Respostas: 10; Visualizações: 1642)

  1. Cikaybe

    Cikaybe Power Member

    Olá,

    Estou a tentar fazer um ficheiro batch que me mova os ficheiros com um certo nome para uma directoria a minha escolha.

    Código:
    @ECHO OFF
    dir /b *NOME_DO_FICHEIRO*.* > mover.txt
    for /f %i in (mover.txt) do move %i CAMINHO_DESTINO
    Se correr o ficheiro bat dá-me o erro "não era esperado nesta altura.", mas se colar estas mesmas linhas na linha de comandos isto corre sem problemas.

    Um exemplo:
    Código:
    @ECHO OFF
    dir /b *tech*.* > mover.txt
    for /f %i in (mover.txt) do move %i D:\online\links\tech\
    Output: D:\online\links\tech\ não era esperado nesta altura.

    Alguém pode ajudar?
     
    Última edição: 12 de Novembro de 2007
  2. kzip

    kzip Power Member

    Para usares o comando FOR dentro de um ficheiro .bat, tens de substituir os %i por %%i.
     
  3. Cikaybe

    Cikaybe Power Member

    Tens toda a razão.
    Era mesmo isso.

    Obrigado
     
  4. Cikaybe

    Cikaybe Power Member

    Estou a ter um problema com ficheiros que contenham espaços nos nomes. Existe alguma maneira de contornar isso?

    Um exemplo:
    Código:
    Se tiver um ficheiro com o nome: [B]
    
    Techzone numero 1.txt[/B] 
    
    ao correr o ficheiro bat ele apenas substitui com [B]Techzone[/B] ignorando o resto do nome.
    
    Existe alguma maneira de o obrigar a colocar toda o nome?

    Obrigado
     
  5. kzip

    kzip Power Member

    Coloca aspas à volta do nome.

    Código:
    move "%%i" D:\online\links\tech\
     
  6. Cikaybe

    Cikaybe Power Member

    Antes de mais obrigado, mas não resolveu.

    Se meter as aspas aparece-me

    "in não era esperado nesta altura."
     
  7. kzip

    kzip Power Member

    Só deves colocar as aspas no %%i do comando move. o do comando for continua sem aspas:

    for /f %%i in (mover.txt) do move "%%i" D:\online\links\tech\
     
  8. kzip

    kzip Power Member

    ou melhor, para evitar que o comando "for" use o espaço como separador:

    Código:
    for /f "delims=?" %%i in (mover.txt) do move "%%i" D:\online\links\tech\
     
  9. Cikaybe

    Cikaybe Power Member

    delims=?

    O que significa?

    Assim já funciona.
     
  10. kzip

    kzip Power Member

    "delims" permite indicar qual o delimitador de cada «palavra». por omissão o sistema usa o espaço e o tab.

    Por exemplo, se tiveres "zé manel.txt", o comando «for» primeiro processa o "zé" e depois o "manel.txt".
    Se definires que o delimitador é o "?" (caracter que nunca aparece no nome de um ficheiro) então de certeza que toda a linha é processada de uma única vez. :p
     
  11. Cikaybe

    Cikaybe Power Member

Partilhar esta Página