Eu sei que "dir / w" ou "dir / b" mostra apenas o nome do arquivo. Enquanto "dir / x" ou "dir / X" mostra o formato 8.3, mas juntos mostram todas as outras informações, como nomes de arquivos de formato longo, datas e tamanho.
é possível chamar dir
, que mostra apenas os nomes dos arquivos (não mostra datas ou tamanhos) e mostra isso no formato 8.3?
windows
command-line
dir
athos
fonte
fonte
Se você deseja apenas que os nomes 8.3 e nada mais sejam exibidos, se você usar "dir / -n", obterá o nome 8.3 no início de cada linha. Nota: separa a extensão do nome do arquivo com um espaço em vez de um ponto.
Mas você pode usar o "dir / -n" dentro de um loop for em um arquivo em lotes e extrair uma substring dos 12 primeiros caracteres para se livrar do restante de cada linha. Por exemplo:
O "skip = 7" ignora as 7 primeiras linhas, que não são nomes de arquivo nem diretório, e a saída do "dir / -n" é canalizada através de dois comandos find para remover as duas últimas linhas produzidas por "dir / -n "(o símbolo do pipe" | "precisa ser" escapado "por um" ^ ". Como a extração de substring ocorre em um loop for no arquivo em lotes," setlocal EnableDelayedExpansion "é necessário e"! "precisa ser usado com o variável x em vez de "%". Para o exemplo acima, você veria a seguinte saída ao executar o arquivo em lotes:
fonte
abc.txt
para ver isso em ação. Então, por diversão, crie um arquivo chamadoabc.docx
.Depois de brincar com isso por uma hora, vim com o seguinte:
from dos prompt:
do arquivo .BAT ou .CMD:
nota: esse script ainda tem problemas com nomes de arquivos longos, mas continuará e criará um arquivo de texto 8dot3 que poderá ser bombeado para qualquer outro arquivo em lote.
A seguir está o meu arquivo .Bat de teste inteiro:
fonte
Para listar arquivos em todos os subdiretórios, tente este:
fonte