tentando copiar arquivos com quatro ou menos caracteres no nome do arquivo com uma determinada extensão para uma nova pasta. Tentei fazer isso por várias horas! ficando frustrado. Usei o comando copy e o curinga ? e *
Responder1
Como AFH apontou nos comentários, um simples "COPY ????.ext" funcionará em nomes de arquivo de quatroou menoscaracteres. Na correspondência de padrões no estilo glob em sistemas baseados em DOS, * significa "0 ou mais caracteres" e aparentemente ? significa zero ou um caractere. No entanto, certifique-se de entender que esse tipo de correspondência de padrões é feito no nível do aplicativo - ou seja, no Windows (e no DOS, nesse caso), passe a linha de comando exatamente como digitada para o programa ser executado. Se você digitar "????.ext", é exatamente isso que o comando COPY vê.
Compare isso com outros shells com os quais trabalhei, como em un*x (bash, tcsh, etc), onde o interpretador de comandos primeiro expande todas as correspondências de padrões e passa a lista completa de arquivos para o comando. Ou seja, nesses shells, se você digitar "copiar arquivo.?", o shell chamará "copiar arquivo.1 arquivo.2 arquivo.3", "copiar" normalmente nunca verá o literal "arquivo.?" argumento.
(E é por isso que minha primeira resposta original estava incorreta - testei-a com um comando que foinãoexpandindo a forma como o CMD.EXE do Windows teria feito. Apenas algo para estar ciente!)
Não há nenhuma maneira no console/linha de comando normal do Windows (que énãoDOS, aliás!) fazer isso com um único comando por causa do jeito ? e * funciona no Windows: ? corresponde a um único caractere e * corresponde ao maior número possível. Nem permite que você especifique uma contagem. Mas usando um arquivo em lote para executar cada comando em sequência, você pode obter o mesmo efeito:
@echo off
copy "????.ext" "target folder"
copy "???.ext" "target folder"
copy "??.ext" "target folder"
copy "?.ext" "target folder"
Usando várias técnicas de arquivo em lote, você também pode modificá-lo para funcionar com outros comprimentos de nome de arquivo ou usar pastas de destino diferentes, etc.
Além disso, com sistemas operacionais Windows modernos, você provavelmente terá o VBScript disponível por meio do Windows Script Host e, com o Win8, deverá ter o PowerShell, ambos permitindo uma lógica de programação muito mais extensa, como expressões regulares poderosas e assim por diante.