Come posso creare automaticamente un elenco di cartelle con nome in Windows?


13

Quindi, sto studiando un corso online che ha centinaia di lezioni secondarie. Devo scaricare il codice sorgente per ogni lezione in una sottocartella corrispondente. Con oltre 120 lezioni, la creazione di una sottocartella una alla volta è un processo scrupoloso.

Ecco la mia attuale struttura di cartelle:

inserisci qui la descrizione dell'immagine

C'è un modo in cui posso creare tutte queste sottocartelle contemporaneamente, insieme al nome proprio, attraverso un file batch o qualcosa di simile.


@WesSayeed Non sono sicuro di cosa intendi. Non eliminerebbe solo tutte le cartelle? Sto cercando di creare cartelle da 9 fino a 122 (o quante mai il numero di lezioni che ci sono).
Manish Giri,

Dato che menzionate specificamente i file batch e di script, non lo posterò come una risposta, ma i veri super utenti sanno che è molto più semplice ottenere lo strumento giusto per il lavoro invece di scrivere il proprio;). Basta usare uno strumento di ridenominazione e probabilmente lo si può capire in meno di un minuto, incluso il download. Ho usato personalmente Rename Master e Bulk Rename Utility (contiene annunci) ed entrambi sono in grado di gestire questa e molte altre noiose operazioni su file e cartelle. (Non sono affiliato con nessuno dei due strumenti.)
Lilienthal,

Utilizzare un programma come getright per il download. Ha una versione gratuita. Ogni file dovrebbe essere scaricato nella sua sede corretta.
JDługosz,

Risposte:


29

Come posso creare tutte queste sottocartelle contemporaneamente, usando il mio schema di denominazione?

Se dovessi creare le sottocartelle in una directory specifica, come C: \ Dropbox \ Development, dovrei prima effettuare il cd in quella directory? Supponendo che sto usando la shell cmd?

Per creare le sottocartelle (sottodirectory) in una directory specifica (che non è la directory corrente), è possibile effettuare una delle seguenti operazioni:

  • cd C:\Dropbox\Development prima o
  • Cambia il md Lec-%%icomando in md C:\Dropbox\Development\Lec-%%i.

Nota:

  • mkdirè sinonimo di mde può essere utilizzato al suo posto.

Di seguito mostro entrambe le alternative, prima da una cmdshell (riga di comando) e seconda usando un file batch.

Come bonus (anche se non richiesto nella domanda originale) c'è anche bashun'alternativa alla shell.


Da una cmdshell:

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

o

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

Da un file batch:

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

O

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

Appunti:

  • 9è il numero iniziale. Cambia se necessario.
  • 1è il passo. Non cambiare questo.
  • 120il numero finale. Modificare, se necessario, il numero dell'ultima directory richiesta.
  • Per creare file in un'altra directory, puoi farlo

    • cd C:\Dropbox\Development\Lec-%%i prima o
    • cambia il mdcomando in md C:\Dropbox\Development\Lec-%%i.

C'è un modo per fare una cosa simile per Mac OSX dal terminale Mac?

Da una bashshell:

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

Oppure (per una versione più portatile)

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

Ulteriori letture


Se dovessi creare le sottocartelle in una directory specifica, ad esempio C:\Dropbox\Development, dovrei prima accedere cda quella directory? Supponendo che sto usando la cmdshell? E molte grazie!
Manish Giri,

@ Danese sì, prima dovresti accedere cdalla cartella.
LPChip,

No. Basta cambiare md Lec-%%iinmd C:\Dropbox\Development\Lec-%%i
DavidPostill

Invece di mdperché non utilizzare mkdirsu Windows? In questo modo è coerente con * nix e una differenza in meno che le persone devono ricordare.
user541686,

@Mehrdad Aggiungerò una nota in tal senso.
DavidPostill

22

C'è un altro modo semplice, per un numero limitato di cartelle. Può essere utile qui o per qualcun altro.

In Windows possiamo creare nomi di cartelle numerati creando una cartella "lec (1)" e copiandola incollandola quante volte vogliamo, se incolliamo 10 volte ci saranno 11 cartelle con nomi "lect (1)" in "lec ( 10) - Copia "

L'unico trucco qui è che la prima cartella deve contenere parentesi (n), dove n è il numero da cui inizia la numerazione.

Windows include "- copia" in corrispondenza del nome della cartella incollata "lec (1) - Copia" :(

Se non ti piace, seleziona tutto e rinomina prima lec (1) -> lec- (1) o altro.

Tutti i nomi delle cartelle verranno adattati e "- copia" verrà rimosso;)

  • Ctrl + C - Copia
  • Ctrl + V - Incolla
  • F2 - rinomina
  • Invio - per terminare la ridenominazione.
  • ESC- per annullare la ridenominazione.
  • Ctrl + A o Ctrl + SU per selezionare le cartelle.

inserisci qui la descrizione dell'immagine


2
+1 per avermi insegnato qualcosa che non sapevo. :)
LPChip,

L'animazione (".gif") è piuttosto un bel tocco, ma ripeterlo ancora e ancora e ancora e ancora ... all'infinito, è molto fastidioso.
Kevin Fegan,

4
@KevinFegan Non sono d'accordo. Le GIF in loop assicurano all'utente (tu) di vedere effettivamente l'animazione senza ricaricare la pagina e scorrere rapidamente verso il basso per provare a vederla. La maggior parte dei browser non offre pulsanti di controllo GIF.
phyrfox,

risposta fantastica e basta smettere di guardare dopo aver ottenuto il punto!
mothmonsterman,

Questo non funzionerà se non si desidera la parentesi nel nome della cartella. Ad esempio, posso creare un elenco di cartelle: x (0), x (1), x (2), ... x (N). Ma NON riesco a creare un elenco: x0, x1, x2, ... xN
Gil Epshtain

2

Questo non sarà meglio di uno script per il tuo particolare scenario, ma è abbastanza bello saperlo quando i nomi delle tue cartelle non sono correlati: puoi creare più directory dalla riga di comando separandole con uno spazio:

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

3
È carino da parte tua segnalarlo, ma non risponde alla domanda ...
DavidPostill

1
@DavidPostill. Sono d'accordo, motivo per cui l'ho scritto nel modo in cui l'ho fatto. Ma è MOLTO meglio della creazione di cartelle 1 per 1. Forse dovrei eliminare la risposta e renderla un commento?
TTT

1

Se si creano cartelle numerate denominate in questo modo, è possibile che non vengano visualizzate nell'ordinamento corretto (previsto):

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

Il problema è che la parte numerica dei nomi di cartelle è a larghezza variabile, il che influenza il modo in cui le cartelle sono ordinate.

Se per te è importante che le cartelle siano ordinate correttamente, usa il file batch di seguito per creare cartelle con la parte numerata dei nomi delle cartelle riempita con "0" (zero) in modo che tutti i numeri abbiano la stessa lunghezza, in questo modo:

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

Ecco il file batch:

@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

1
Il modo in cui ordinano dipende dallo strumento. Explorer (e la maggior parte degli altri file manager) li ordinerà in modo intuitivo, con l' Lec-10arrivo dopo Lec-9.
Afrazier

Explorer utilizza l'ordinamento naturale, quindi 2verrà inserito prima 10come ci si aspetterebbe (se si guarda allo screenshot dell'OP 9 viene anche ordinato prima di 10). dirSoffre solo di quel problema e necessita di 0imbottiture, ma l'OP non sapeva molto della riga di comando, quindi non credo che sarà un problema
phuclv,

@phuclv - Sì, come dici tu, "OP non sapeva molto della riga di comando ...". Ecco perché ho scritto questa risposta. Far sapere all'OP cosa aspettarsi e fornire una soluzione (risposta). Potevo immaginare che OP utilizzava la grande risposta di DavidPostill, per poi diventare confuso nel vedere direlenchi di cartelle fuori servizio. Windows Come hai già detto tu e Afrazier , Windows Explorer ordina / elenca correttamente le cartelle, ma l'OP stava cercando una batchsoluzione, il che significa che molto probabilmente funzioneranno dal command prompt.
Kevin Fegan,

0

È possibile eseguire questo file batch nella stessa cartella dei file. Ogni file verrà spostato in una cartella con lo stesso nome.

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

Lo uso con un avviso di seguito per evitare un uso accidentale.

@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"
)
)

-1

Prima di tutto non ho letto tutto il tuo problema ... ma per quanto ne so ... vuoi rinominare le cartelle in base all'elenco ... beh, ci sono due metodi

Metodo-1 -Se non hai un elenco di cartelle ... c'è una soluzione alternativa ... devi andare su macOS con questo albero delle cartelle ... e semplicemente copiare l'intero albero delle cartelle ... Quello che macOS farà sarà copiare il contenuto così come l'elenco di tutte le cartelle in termini di elenco e ... ora incolla in TextEdit o qualsiasi software simile a Blocco note.

-Ora suppongo che tu abbia quell'elenco di cartelle con te ... hai solo bisogno di un software di terze parti per fare il lavoro (ora tutti i passaggi sono per Windows) https://www.rename-expert.com -In termini per usare questo software dovevi creare una nuova cartella, una nuova cartella-2, una nuova cartella-4 quanto volevi.

-Ora in Rinomina esperto esiste un'opzione per rinominare le cartelle dalla base dell'elenco.

- Boom hai finito.

Metodo-2 -Se si desidera creare una copia speculare dell'intero albero delle cartelle senza file al suo interno.

-Beyond Compare è il software che ti serve. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure


Ciò presuppone erroneamente che l'utente abbia già l'albero delle cartelle completo. Esistono soluzioni migliori che non richiedono software extra e / o sconosciuto.
jiggunjer,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.