Como posso criar uma lista de pastas nomeadas no Windows automaticamente?

13

Então, eu estou estudando um curso on-line que tem centenas de sub-aulas. Preciso fazer o download do código fonte de cada aula em uma subpasta correspondente. Com mais de 120 palestras, criar uma subpasta uma a uma é um processo minucioso.

Aqui está minha estrutura de pastas atual:

insira a descrição da imagem aqui

Existe uma maneira de criar todas essas subpastas de uma só vez, juntamente com o nome próprio, por meio de um arquivo em lotes ou algo semelhante.

Manish Giri
fonte
@ WesSayeed Não sei bem o que você quer dizer. Isso não excluiria todas as pastas? Estou procurando criar pastas de 9 até 122 (ou quantas já houve o número de palestras).
Manish Giri
Como você mencionou especificamente arquivos em lote e script, não postarei isso como resposta, mas os superusuários reais sabem que é muito mais fácil obter a ferramenta certa para o trabalho, em vez de escrever o seu próprio;). Basta usar uma ferramenta de renomeação e você provavelmente poderá descobrir isso em menos de um minuto, incluindo o download. Eu usei pessoalmente Renomear mestre e Utilitário de renomeação em massa (contém anúncios) e ambos podem lidar com essa e muitas outras operações irritantes de arquivos e pastas. (Eu não sou afiliado com qualquer ferramenta.)
Lilienthal
Use um programa como o getright para fazer o download. Tem uma versão gratuita. Cada arquivo deve ser baixado em sua casa adequada.
JDługosz

Respostas:

29

Como posso criar todas essas subpastas de uma só vez, usando meu esquema de nomenclatura?

Se eu fosse criar as subpastas em um diretório específico, como C: \ Dropbox \ Development, precisaria primeiro fazer o cd nesse diretório? Supondo que estou usando o shell cmd?

Para criar as subpastas (subdiretórios) em um diretório específico (que não seja o diretório atual), siga um destes procedimentos:

  • cd C:\Dropbox\Development primeiro ou
  • Mude o md Lec-%%icomando para md C:\Dropbox\Development\Lec-%%i.

Nota:

  • mkdiré um sinônimo mde pode ser usado em seu lugar.

Abaixo, mostro as duas alternativas, primeiro de um cmdshell (linha de comando), e segundo usando um arquivo em lotes.

Como bônus (embora não seja solicitado na pergunta original), também existe uma bashalternativa ao shell.


De uma cmdconcha:

cd C:\Dropbox\Development
for /l %i in (9,1,120) do md Lec-%i

ou

for /l %i in (9,1,120) do md C:\Dropbox\Development\Lec-%i

De um arquivo em lotes:

@echo off
cd C:\Dropbox\Development
for /l %%i in (9,1,120) do md Lec-%%i

Ou

@echo off
for /l %%i in (9,1,120) do md C:\Dropbox\Development\Lec-%%i

Notas:

  • 9é o número inicial. Troque se necessário.
  • 1é o passo. Não mude isso.
  • 120o número final. Altere, se necessário, o número do último diretório necessário.
  • Para criar arquivos em outro diretório, você pode

    • cd C:\Dropbox\Development\Lec-%%i primeiro ou
    • mude o mdcomando para md C:\Dropbox\Development\Lec-%%i.

Existe uma maneira de fazer uma coisa semelhante no Mac OSX a partir do terminal Mac?

De uma bashconcha:

for i in {9..120}; do mkdir Lec-$i; done; 

Ou (para uma versão mais portátil)

for i in `seq 9 120`; do mkdir Lec-$i; done;

Leitura adicional

DavidPostill
fonte
Se eu fosse criar as subpastas em um diretório específico, como C:\Dropbox\Development, precisaria cdprimeiro desse diretório? Supondo que estou usando o cmdshell? E muito obrigado!
precisa
@ Manish sim, você precisaria ir cdpara a pasta primeiro.
LPChip
Não. Basta alterar md Lec-%%iparamd C:\Dropbox\Development\Lec-%%i
DavidPostill
Em vez de mdpor que não usar mkdirno Windows? Dessa forma, é consistente com * nix e uma diferença a menos para as pessoas se lembrarem.
user541686
@Mehrdad adicionarei uma nota para esse efeito.
DavidPostill
22

Existe outra maneira fácil, para número limitado de pastas. Pode ser útil aqui ou para outra pessoa.

No Windows, podemos criar nomes de pastas numeradas criando uma pasta "lec (1)" e copiando colando quantas vezes quisermos, se colarmos 10 vezes, haverá 11 pastas com os nomes "lect (1)" a "lec ( 10) - Copiar "

O único truque aqui é que a primeira pasta deve incluir parênteses (n), onde n é o número de onde a numeração começa.

O Windows inclui "- copy" no e do nome da pasta colada "lec (1) - Copy" :(

Se você não gostar, selecione tudo e renomeie primeiro lec (1) -> lec- (1) ou qualquer coisa.

Todos os nomes das pastas serão ajustados e "- cópia" será removida;)

  • Ctrl + C - Copiar
  • Ctrl + V - Colar
  • F2 - renomear
  • Enter - para concluir a renomeação.
  • ESC- para cancelar a renomeação.
  • Ctrl + A ou Ctrl + UP para selecionar pastas.

insira a descrição da imagem aqui

shahid
fonte
2
+1 por me ensinar algo que eu não sabia. :)
LPChip
A animação (".gif") é um toque agradável, mas repeti-la sem parar e sem parar ... sem parar, é muito irritante.
Kevin Fegan
4
@KevinFegan eu discordo. GIFs em loop garantem que o usuário (você) consiga realmente ver a animação sem recarregar a página e rolar para baixo rapidamente para tentar vê-la. A maioria dos navegadores não oferece botões de controle GIF.
Phyrfox 17/11/2015
resposta incrível e pare de assistir depois de entender!
happytime harry
Isso não funcionará se você não desejar parênteses no nome da sua pasta. Por exemplo, posso criar uma lista de pastas: x (0), x (1), x (2), ... x (N). Mas eu não posso criar uma lista: x0, x1, x2, ... xN
Gil Epshtain
2

Isso não será melhor do que um script para o seu cenário específico, mas é bom saber disso quando os nomes de suas pastas não são relacionados: você pode criar vários diretórios a partir da linha de comando, separando-os por um espaço:

C:\temp\animals>dir
 Volume in drive C is Windows
 Volume Serial Number is 82CB-BB0F

 Directory of C:\temp\animals

11/16/2015  03:55 PM    <DIR>          .
11/16/2015  03:55 PM    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)  1,636,846,243,840 bytes free

C:\temp\animals>mkdir cats dogs penguins

C:\temp\animals>dir
 Volume in drive C is Windows
 Volume Serial Number is 82CB-BB0F

 Directory of C:\temp\animals

11/16/2015  03:55 PM    <DIR>          .
11/16/2015  03:55 PM    <DIR>          ..
11/16/2015  03:55 PM    <DIR>          cats
11/16/2015  03:55 PM    <DIR>          dogs
11/16/2015  03:55 PM    <DIR>          penguins
               0 File(s)              0 bytes
               5 Dir(s)  1,636,846,178,304 bytes free
TTT
fonte
3
É bom que você apontar isso, mas ele não responder à pergunta ...
DavidPostill
1
@DavidPostill. Eu concordo, e é por isso que escrevi da maneira que escrevi. Mas é MUITO melhor do que criar pastas 1 por 1. Talvez eu deva excluir a resposta e fazer um comentário?
TTT
1

Você pode achar que, se criar pastas numeradas nomeadas assim, elas não serão exibidas na ordem de classificação adequada (esperada):

C:\Dropbox\Development> dir /b
Lec-10
Lec-100
Lec-101
Lec-102
Lec-103
Lec-104
Lec-105
Lec-106
Lec-107
Lec-108
Lec-109
Lec-11
Lec-110
Lec-111
Lec-112
Lec-113
Lec-114
Lec-115
Lec-116
Lec-117
Lec-118
Lec-119
Lec-12
Lec-120
Lec-13
Lec-14
Lec-15
Lec-16
Lec-17
Lec-18
Lec-19
Lec-20
Lec-21
...
Lec-89
Lec-9
Lec-90
Lec-91
...

O problema é que a parte numérica dos nomes das dobras é de largura variável, o que afeta a forma como as pastas são classificadas.

Se for importante para você que as pastas sejam classificadas corretamente, use o arquivo em lotes abaixo para criar pastas com a parte numerada dos nomes das pastas preenchida com "0" (zero), para que todos os números tenham o mesmo comprimento, assim:

C:\Dropbox\Development> dir /b
Lec-009
Lec-010
Lec-011
Lec-012
Lec-013
Lec-014
Lec-015
Lec-016
Lec-017
Lec-018
Lec-019
Lec-020
Lec-021
...

Aqui está o arquivo em lotes:

@echo off

for /L %%f in (9,1,120) do call :work 000%%f
goto :EOF


:work

set "dx=%~1"
set "dx=%dx:~-3%"

md "C:\Dropbox\Development\Lec-%dx%" >nul 2>&1

set "dx="
goto :EOF
Kevin Fegan
fonte
1
Como eles classificam depende da ferramenta. O Explorer (e a maioria dos outros gerenciadores de arquivos) os classificará de forma intuitiva, com o Lec-10seguinte Lec-9.
afrazier
O Explorer usa classificação natural, portanto 2, será colocado antes 10como seria esperado (se você observar a captura de tela 9 do OP também será classificada antes de 10). Apenas dirsofre com esse problema e precisa 0paddings, mas o OP não sabia muito sobre a linha de comando, então eu não acho que vai ser um problema
phuclv
@phuclv - Sim, como você diz, "OP não sabia muito sobre a linha de comando ...". Por isso escrevi esta resposta. Informar ao OP o que esperar e fornecer uma solução (resposta). Eu poderia imaginar o OP usando a ótima resposta de DavidPostill e depois ficar confuso ao ver a dirlistagem de pastas fora de ordem. Windows Como você e seu afrazier mencionaram, o Windows Explorer classificará / listará as pastas corretamente, mas o OP estava procurando uma batchsolução, o que significa que elas (provavelmente) estarão trabalhando na command prompt.
Kevin Fegan
0

Você pode executar esse arquivo em lotes na mesma pasta que os arquivos. Cada arquivo será movido para uma pasta com o mesmo nome.

for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)

Eu o uso com um aviso abaixo para evitar o uso acidental.

@echo off
echo.
set sure=
set /p sure=you want to put each file in this folder into their own folders? 
if /i "%sure%"=="" exit
if /i "%sure:~0,1%"=="n" exit
if /i not "%sure:~0,1%"=="y" (exit) else (echo.&echo are you sure? Close window to cancel or..)
echo.&pause 
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)
Terence
fonte
-1

Primeiro de tudo, eu não li todo o seu problema ... mas até onde eu sei ... você deseja renomear pastas com base na lista ... bem, existem dois métodos

Método-1 -Se você não possui uma lista de pastas ... existe uma solução alternativa ... você precisa acessar o macOS com esta árvore de pastas ... e apenas copiar a árvore de pastas inteira ... O que o macOS fará é copiar o conteúdo bem como a lista de todas as suas pastas em termos de lista também ... agora cole no TextEdit ou em qualquer software semelhante ao Bloco de Notas.

-Agora eu estou supondo que você tenha essa lista pasta é com você ... você só precisa de um software de terceiros para fazer o trabalho (agora todos os passos são para Windows) https://www.rename-expert.com -Em termos Para usar este software, você teve que criar uma nova pasta, nova pasta-2, nova pasta-4, conforme desejado.

Agora, no Rename Expert, há uma opção para renomear pastas a partir da base da lista.

-Boom, você está pronto.

Método 2 - Se você deseja criar uma cópia espelhada de toda a sua árvore de pastas sem arquivos.

-Beyond Compare é o software que você precisa. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure

Utkarsh Patel
fonte
Isso supõe incorretamente que o usuário já tenha a árvore de pastas completa. Existem soluções melhores que não requerem software extra e / ou desconhecido.
precisa saber é o seguinte