Como você itera sobre cada arquivo em um diretório com um arquivo .bat ou .cmd?
Para simplificar, forneça uma resposta que apenas ecoe o nome do arquivo ou o caminho do arquivo.
Uso da linha de comando:
for /f %f in ('dir /b c:\') do echo %f
Uso de arquivo em lote:
for /f %%f in ('dir /b c:\') do echo %%f
Atualização : se o diretório contiver arquivos com espaço nos nomes, você precisará alterar o delimitador que o for /f
comando está usando. por exemplo, você pode usar o caractere de pipe.
for /f "delims=|" %%f in ('dir /b c:\') do echo %%f
Atualização 2 : (rápida um ano e meio após a resposta original :-)) Se o próprio nome do diretório tiver um espaço no nome, você poderá usar a usebackq
opção no for
:
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files"`) do echo %%f
E se você precisar usar o redirecionamento de saída ou a tubulação de comando, use o escape char ( ^
):
for /f "usebackq delims=|" %%f in (`dir /b "c:\program files" ^| findstr /i microsoft`) do echo %%f
/f
necessário após ofor
? De acordo com os documentos da ajuda, o/f
sinalizador é aberto e lê cada arquivo. Isso é necessário para ecoar ou renomear arquivos?/f
depoisFOR
restringe a arquivos. Da mesma forma,/d
restringe-se a diretórios (pastas) e/r
instrui-o a ser recursivo.'dir /b "c:\program files"'
que deveria ser`dir /b "c:\program files"`
Como alternativa, use:
O comando forfiles está disponível no Windows Vista e superior.
fonte
Método mais fácil:
Na linha de comando, use:
Em um arquivo em lotes (dobre os sinais de porcentagem%):
Em um arquivo em lotes com pasta especificada como 1º parâmetro:
fonte
dir /B
saídafor
.Usar
com:
fonte
%%var was unexpected at this time.
Você pode dar um exemplo exato? Eu tentei um monte de variações defor /r . %%var in (*.*) do echo %%var
Outra maneira:
fonte
"%~nf"
significa o nome do arquivo sem extensão, ondef
é o nome da variável especificada emfor
parte. Documentos: docs.microsoft.com/pt-br/previous-versions/windows/it-pro/…Eu tinha algum malware que marcava todos os arquivos em um diretório como oculto / system / readonly. Se mais alguém se encontrar nessa situação, faça o cd no diretório e execute
for /f "delims=|" %f in ('forfiles') do attrib -s -h -r %f
.fonte