Eu preciso de um comando que possa ser executado na linha de comando para criar uma pasta para cada arquivo (com base no nome do arquivo) em um diretório e depois mover o arquivo para as pastas recém-criadas.
Exemplo:
Pasta inicial:
Dog.jpg
Cat.jpg
O comando a seguir funciona muito bem na criação de uma pasta para cada nome de arquivo no diretório de trabalho atual.
for %i in (*) do md "%~ni"
Pasta de resultado:
\Dog\
\Cat\
Dog.jpg
Cat.jpg
Preciso dar um passo adiante e mover o arquivo para a pasta
O que eu quero alcançar é:
\Dog\Dog.jpg
\Cat\Cat.jpg
Alguém pode me ajudar com um comando para fazer tudo isso?
windows
batch-file
Tom
fonte
fonte
for %i in (*) do cmda && cmdb
B) poderia ecoar primeirofor %i in (*) do @ECHO cmda && cmdb
C) poderia adicionar Eu acho que é um / R para passar por subdiretórios.for %i in (*) do move "%~i" "%~ni"
Mesmo isso pode não ser bom o suficiente, pois pode ter efeitos colaterais quando a pasta de destino não existe (por exemplo, arquivos sendo "movidos" sobre si mesmos e, portanto, renomeados). Uma solução fácil seria combinar os dois comandos, assim:for %i in (*) do md "%~ni" && move "%~i" "%~ni"
O comando supõe que os diretórios ainda não existam.cmda && cmdb
,cmdb
será executado apenas se tivercmda
sido bem-sucedido. Se você fosse usarcmda & cmdb
, o segundo comando seria executado independentemente. De fato, um único e comercial (&
) é apenas um separador de comandos e o duplo e comercial (&&
) é condicional . Comandos que não definem umerrorlevel
valor não devem ser usados com o último.Basta executar estes comandos em série:
Para criar as pastas para cada arquivo:
Para mover cada arquivo para sua pasta:
fonte
Isso será feito se você tiver algumas pastas como: exemplo years \ Filename.mp4
listará todos os arquivos da pasta no 1º nível; lista todos * .mp4 e * .mkv criará as pastas de 2 níveis com o nome do arquivo e moverá todos os mesmos arquivos de nome na pasta de 1º nível para a pasta de 2º nível, execute-a na pasta base dos anos.
Se você não tiver uma pasta YEARS de 1º nível, basta ignorar a primeira e executar a 2ª etapa, execute-a na pasta base do nome do arquivo.
O && garantirá que o mkdir% ERRORLEVEL% anterior seja 0 para executar a movimentação dos arquivos
Para testar, use o seguinte:
fonte