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?
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.