Eu queria remover o nome do arquivo do loop for
FOR /F "usebackq tokens=*" %%i IN (DIR /S /B D:\check\*.txt| find /v "_%year%_%month%_%day%") DO (
Sua sintaxe for
está incorreta de duas maneiras:
-
Você está usando
usebackq
- Isso significa que o argumento do comando para
for
deve ser delimitado com aspas anteriores '
- Isso significa que o argumento do comando para
-
Você não está escapando do símbolo do pipe.
- Substitua o símbolo
|
do canal por^|
- Substitua o símbolo
Comando for
corrigido:
FOR /F "usebackq tokens=*" %%i IN ('DIR /S /B D:\check\*.txt ^| find /v "_%year%_%month%_%day%"') DO (
Também pode haver outros erros no seu arquivo de lote ...
Sintaxe
FOR /F ["options"] %%parameter IN ('command_to_process') DO command
Key
options:
usebackq Use the alternate quoting style:
- Use double quotes for long file names in "filenameset".
- Use single quotes for 'Text string to process'
- Use back quotes for
command_to_process
Fonte para / f
Caractere de escape
^
Escape character.
Adicionando o caractere de escape antes que um símbolo de comando permita que seja tratado como texto comum.
Ao direcionar ou redirecionar qualquer um desses caracteres &
, \
, <
, >
, ^
ou |
, você deve prefixá-los com o caractere de escape.
Por exemplo, ^\
^&
^|
^>
^<
^^
Leitura Adicional
- Um índice A-Z da linha de comando do Windows CMD - Uma excelente referência para todas as coisas relacionadas à linha do Windows cmd.
- para / f - Comando Loop contra os resultados de outro comando.
- sintaxe - Escape Characters, Delimiters e Quotes.