Arquivo em lote do Windows para mover arquivos para subpastas com base na primeira palavra no nome do arquivo?

1

Eu sou um pouco de um arquivo de lote noob, então eu realmente aprecio sua ajuda. Eu tenho uma tonelada de arquivos armazenados em um único diretório que eu gostaria de classificar em subpastas com base na primeira palavra em seus nomes de arquivos. Então, eu tenho arquivos como estes:

C:\Folder\Wedding2018 img20929.jpg 
C:\Folder\Wedding2018 entrance.mov
C:\Folder\Wedding2018 registry of guests.pdf

C:\Folder\HorseRiding2017 spirit1.jpg
C:\Folder\HorseRiding2017 guests.txt 
C:\Folder\HorseRiding2017 certificate.pdf
C:\Folder\HorseRiding2017 jumping.mov

E desejo mover todos os arquivos para subpastas com base na primeira palavra, terminando assim:

C:\Folder\Wedding2018\img20929.jpg
C:\Folder\Wedding2018\entrance.mov
C:\Folder\Wedding2018\registry of guests.pdf

C:\Folder\HorseRiding2017\spirit1.jpg
C:\Folder\HorseRiding2017\guests.txt
C:\Folder\HorseRiding2017\certificate.pdf
C:\Folder\HorseRiding2017\jumping.mov

Eu encontrei alguns scripts que quase fizeram o que eu preciso, mas eu não tenho as costeletas para levar para casa:

" Precisa de um script para criar pastas com base em nomes de arquivos e mover arquivos automaticamente "

"Como extrair a segunda palavra de a string pelo lote de janelas "

Não consigo descobrir como integrar o script para pegar a primeira palavra e criar um diretório para o qual os arquivos serão movidos.

Você pode me ajudar a fazer isso do outro lado da linha?

    
por juzzle 11.06.2018 / 23:00

2 respostas

1

  • Use um para iterar o conteúdo da pasta %%A com um padrão que contenha menos um espaço.
  • Outro for /f é necessário para dividir o nome %%A em duas partes, uma antes o primeiro espaço tokens=1 = %%B e o restante tokens * = %%C .
  • Se uma pasta com o nome %%B não existir, crie-a
  • Mova o arquivo original %%A para a subpasta %%B com o nome %%C
:: Q:18\SU_1330475.cmd
@Echo off
PushD C:\folder
for %%A in ("* *.*") do for /f "tokens=1*" %%B in ("%%A") do (
     If not exist "%%B" MD "%%B"
     Move "%%A" "%%B\%%C"
)
PopD
> tree /f
C:.
│   SU_1330475.cmd
│
└───folder
    ├───HorseRiding2017
    │       certificate.pdf
    │       guests.txt
    │       jumping.mov
    │       spirit1.jpg
    │
    └───Wedding2018
            entrance.mov
            img20929.jpg
            registry of guests.pdf
    
por 12.06.2018 / 01:04
-1

Tem que ser um arquivo de lote?

Eu abriria a pasta principal onde todos os arquivos e subpastas estão localizados, em seguida você acessa o campo de pesquisa nessa janela e digita wedding * por exemplo. Você seleciona todos os arquivos preesing CTRL + A, então você pressiona CTRL + X para cortar.

Você cria uma nova pasta chamada Wedding2018 e pressiona CTRL + V (colar). Então você faz para cada pasta que quiser.

    
por 12.06.2018 / 00:06