Como você copia arquivos usando uma linha de comando quando o arquivo tem 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 de cópia e o curinga? e *

    
por user347966 19.07.2014 / 16:39

1 resposta

1

Como AFH apontou nos comentários, um simples "COPY ????. ext" funcionará em nomes de arquivos de quatro ou menos chars. Em correspondência de padrões estilo glob em sistemas baseados em DOS, * significa "0 ou mais caracteres" e aparentemente? significa zero ou um chars. No entanto, certifique-se de entender que esse tipo de correspondência de padrões é feito no nível do aplicativo - ou seja, Windows (e DOS, nesse caso), passa a linha de comando exatamente conforme digitado no programa a ser executado. Se você digitar "????. Ext", é exatamente o 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 "copy file.?", O shell chama "copy file.1 file.2 file.3", "copy" normalmente nunca vê o literal "file.?" argumento.

(E é por isso que minha primeira resposta original estava incorreta - eu testei com um comando que não estava expandindo a maneira que o CMD.EXE do Windows teria ... apenas algo para estar ciente de !)

Não há nenhuma maneira normal no console do Windows / linha de comando (que é não DOS, a propósito!) Para fazer isso com um único comando por causa do caminho? e * funcionam no Windows: corresponde a um único caractere e * corresponde ao maior número possível. Nem deixe você especificar uma contagem. Mas, usando um arquivo em lotes para executar cada comando em seqüê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 outras extensões de nome de arquivo ou usar pastas de destino diferentes, etc.

Além disso, com os modernos sistemas operacionais Windows, é muito provável que você tenha o VBScript disponível via Windows Script Host, e com o Win8, você deve ter o PowerShell, ambos permitem muito mais lógica de programação extensiva, como expressões regulares poderosas e assim por diante. / p>     
por 19.07.2014 / 17:00

Tags