Como você copia arquivos usando uma linha de comando quando o arquivo possui quatro ou menos caracteres no nome do arquivo?


0

tentando copiar arquivos com quatro ou menos caracteres no nome do arquivo com uma certa extensão para uma nova pasta. Eu tentei fazer isso por várias horas agora! ficando frustrado. Eu usei o comando copy e o curinga? e *

Respostas:


1

Como AFH apontou nos comentários, um simples "COPY ????. Ext" funcionará em nomes de arquivos com quatro ou menos caracteres. 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ão é feito no nível do aplicativo - ou seja, o Windows (e o DOS), passa a linha de comando exatamente como digitado no programa a 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, nessas conchas, se você digitar "copiar arquivo.?", O shell chama "cópia arquivo.1 arquivo.2 arquivo.3", "cópia" normalmente nunca vê o literal "arquivo".? argumento.

(E é por isso que minha primeira resposta original estava incorreta - testei-a com um comando que não estava expandindo a maneira como o CMD.EXE do Windows teria .. Apenas algo a ter em atenção!)

Não há nenhuma maneira no console / linha de comando normal do Windows (que não é o DOS, a propósito!) Fazer isso com um único comando por causa do caminho? e * funciona no Windows:? corresponde a um único caractere e * corresponde ao maior número possível. Nem permita que você especifique uma contagem. Mas, usando um arquivo em lotes 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 trabalhar com outros comprimentos de nome de arquivo ou usar pastas de destino diferentes, etc.

Além disso, nos sistemas operacionais Windows modernos, é provável que você tenha o VBScript disponível no Windows Script Host e, no Win8, deve ter o PowerShell, que permite uma lógica de programação muito mais extensa, como expressões regulares poderosas e assim por diante.


11
??? ext. corresponde a quatro ou menos caracteres no nome, portanto você não precisa mais do que a primeira linha de cópia .
AFH

11
Se você usar todas as quatro linhas de cópia, os arquivos com nomes de caracteres únicos serão copiados quatro vezes, aqueles com dois caracteres três vezes e com três caracteres duas vezes.
AFH

@ AFH: Acabei de testar e você está correto. Terei que encontrar minha antiga biblioteca de arquivos em lotes para atualizar minha memória de como eu a fiz anos atrás e atualizar minha resposta. Obrigado por apontar isto!
19714 CM
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.