Não é possível encontrar o erro nesta sintaxe (se a instrução forfiles for batch)

1

não importa o que eu tente, eu não obtenho a seguinte linha em um arquivo de lote na minha máquina Win7 64-bit para funcionar:

forfiles /P "I:\testroot" /C "CMD /C if /i @FILE==testung.txt del /s @FILE"

O código é executado, nenhum erro é mostrado, mas o arquivo testung.txt não é excluído.

Se alguém estiver interessado na sintaxe oficial do MS:

link

Então, onde está o problema?

    
por user54512 23.06.2014 / 19:24

1 resposta

2

Você perdeu um par de aspas duplas ...

O que está acontecendo é que @FILE retorna o nome do arquivo envolto em aspas duplas, então você precisa referenciá-lo como tal na comparação da instrução IF.

Você pode testemunhar isso fazendo um forfiles /P "I:\testroot" /C "CMD /C echo @FILE" e vendo que testung.txt é ecoado como "testing.txt" .

Para usar aspas duplas dentro de uma string (em vez de como um delimitador de string), você precisa escapar com um \ .

Então, quando fizermos isso, deve funcionar:

forfiles /P "I:\testroot" /C "CMD /C if /i @FILE==\"testung.txt\" del /s @FILE"

    
por 23.06.2014 / 20:16

Tags