View Full Version : Problema .BAT


Cikaybe
12-11-2007, 12:27
Olá,

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

@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:
@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?

kzip
12-11-2007, 14:51
Para usares o comando FOR dentro de um ficheiro .bat, tens de substituir os %i por %%i.

Cikaybe
12-11-2007, 14:57
Tens toda a razão.
Era mesmo isso.

Obrigado

Cikaybe
15-11-2007, 09:36
Estou a ter um problema com ficheiros que contenham espaços nos nomes. Existe alguma maneira de contornar isso?

Um exemplo:
Se tiver um ficheiro com o nome:

Techzone numero 1.txt

ao correr o ficheiro bat ele apenas substitui com Techzone ignorando o resto do nome.
Existe alguma maneira de o obrigar a colocar toda o nome?

Obrigado

kzip
15-11-2007, 11:02
Coloca aspas à volta do nome.

move "%%i" D:\online\links\tech\

Cikaybe
15-11-2007, 12:10
Antes de mais obrigado, mas não resolveu.

Se meter as aspas aparece-me

"in não era esperado nesta altura."

kzip
15-11-2007, 12:47
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\

kzip
15-11-2007, 13:06
ou melhor, para evitar que o comando "for" use o espaço como separador:

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

Cikaybe
15-11-2007, 13:23
delims=?

O que significa?

Assim já funciona.

kzip
15-11-2007, 15:17
"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

Cikaybe
16-11-2007, 04:05
Obrigado.