Mover arquivos para um subdiretório catalogado alfabeticamente

3

Eu tenho uma variedade de "arquivos" (não pastas) do mesmo tipo (por exemplo, " .docx "), no mesmo diretório.

Além disso, nesse mesmo diretório, tenho um subdiretório chamado " catalog " e, dentro dele, pastas alfabéticas (ou seja, começando com # , A , B , C , D , E , F e assim por diante ...).

Supondo que esses arquivos estejam localizados em " D:/documents/ ", como [Usando o Windows CMD ou o Windows Powershell] eu classificaria a lista de arquivos e os movesse para a pasta "catálogo", em sua pasta apropriada? sensitive ] Pasta "Alfabética", ordenada pela primeira letra do seu nome de arquivo [case- insensível ]?

Por exemplo: [ D:/documents/janet_henderson.docx ] mudaria para [ D:/documents/catalog/J/janet_henderson.docx ]

Por favor, note que eu preciso ter arquivos com nomes começando com qualquer número na pasta " D:/documents/catalog/#/ ".

O que eu tenho até agora

Eu tenho o seguinte em um arquivo organize_files.bat :

move  documents\A*.docx  documents\catalog\A\
move  documents\B*.docx  documents\catalog\B\
move  documents\C*.docx  documents\catalog\C\
move  documents\D*.docx  documents\catalog\D\
move  documents\E*.docx  documents\catalog\E\
move  documents\F*.docx  documents\catalog\F\
move  documents\G*.docx  documents\catalog\G\
move  documents\H*.docx  documents\catalog\H\
move  documents\I*.docx  documents\catalog\I\
move  documents\J*.docx  documents\catalog\J\
move  documents\K*.docx  documents\catalog\K\
move  documents\L*.docx  documents\catalog\L\
move  documents\M*.docx  documents\catalog\M\
move  documents\N*.docx  documents\catalog\N\
move  documents\O*.docx  documents\catalog\O\
move  documents\P*.docx  documents\catalog\P\
move  documents\Q*.docx  documents\catalog\Q\
move  documents\R*.docx  documents\catalog\R\
move  documents\S*.docx  documents\catalog\S\
move  documents\T*.docx  documents\catalog\T\
move  documents\U*.docx  documents\catalog\U\
move  documents\V*.docx  documents\catalog\V\
move  documents\W*.docx  documents\catalog\W\
move  documents\X*.docx  documents\catalog\X\
move  documents\Y*.docx  documents\catalog\Y\
move  documents\Z*.docx  documents\catalog\Z\
  • Existe uma maneira melhor de concluir essa operação, como colocá-la em um loop talvez?
  • Como eu cuido dos arquivos que começam com um número?
  • Preciso dizer ao Windows CMD que não faça distinção entre maiúsculas e minúsculas ao verificar para os nomes dos arquivos?
por James Anderson Jr. 23.01.2016 / 16:49

1 resposta

2

Arranging Files into an Alphabetically Cataloged Sub-Directory

For example: [D:/documents/janet_henderson.docx] would move to [ D:/documents/catalog/J/janet_henderson.docx]

Also, Note: I'm hoping it's obvious that files that have file names starting with a number go into the "D:/documents/catalog/#/" folder.

Com base em como você explica isso e seus exemplos, abaixo estão alguns exemplos de prompt de comando, copiar e colar itens e itens de scripts em lote que concluirão essas ações conforme você descreve.

Suposições

  • Todos os diretórios com catálogo e # já serão criados.
  • Para os primeiros dois exemplos abaixo você NUNCA irá MOVE do mesmo arquivo com o mesmo nome para um diretório onde um arquivo com esse O mesmo nome já existe.
  • Para os últimos dois exemplos abaixo você SEMPRE substituirá um arquivo existente com o comando MOVE da origem para o destino se o mesmo arquivo com o nome SAME já existir.

Cópia do Prompt de Comando (prompt se o arquivo já existir)

@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %A IN %Letters% DO MOVE "%SourceDir%\%~A*.*" "%DestLetterDir%\%~A\"
FOR %B IN %Numbers% DO MOVE "%SourceDir%\%~B*.*" "%DestNumDir%\"
GOTO EOF

Script em lote (prompt se o arquivo já existir)

@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %%A IN %Letters% DO MOVE "%SourceDir%\%%~A*.*" "%DestLetterDir%\%%~A\"
FOR %%B IN %Numbers% DO MOVE "%SourceDir%\%%~B*.*" "%DestNumDir%\"
GOTO EOF

Cópia do Prompt de Comando (sobrescrever força)

@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %A IN %Letters% DO ECHO Y | MOVE "%SourceDir%\%~A*.*" "%DestLetterDir%\%~A\"
FOR %B IN %Numbers% DO ECHO Y | MOVE "%SourceDir%\%~B*.*" "%DestNumDir%\"
GOTO EOF

Script em lote (sobrescrever força)

@ECHO ON

SET Letters=(A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z)
SET Numbers=(0,1,2,3,4,5,6,7,8,9)
SET SourceDir=D:\documents
SET DestLetterDir=D:\documents\catalog
SET DestNumDir=D:\documents\catalog\#

FOR %%A IN %Letters% DO ECHO Y | MOVE "%SourceDir%\%%~A*.*" "%DestLetterDir%\%%~A\"
FOR %%B IN %Numbers% DO ECHO Y | MOVE "%SourceDir%\%%~B*.*" "%DestNumDir%\"
GOTO EOF

Leitura adicional e recursos

por 23.01.2016 / 20:46