¿Cómo puedo crear una lista de carpetas con nombre en Windows automáticamente?

13

Entonces, estoy estudiando un curso en línea que tiene cientos de sub conferencias. Necesito descargar el código fuente de cada conferencia en una subcarpeta correspondiente. Con más de 120 conferencias, crear una subcarpeta una por una es un proceso minucioso.

Aquí está mi estructura de carpetas actual:

ingrese la descripción de la imagen aquí

¿Hay alguna manera de crear todas estas subcarpetas a la vez, junto con el nombre correcto, a través de un archivo por lotes o algo similar?

Manish Giri
fuente
@WesSayeed No estoy seguro de lo que quieres decir. ¿No sería eso simplemente eliminar todas las carpetas? Estoy buscando crear carpetas desde 9 hasta 122 (o la cantidad de conferencias que hay).
Manish Giri
Como menciona específicamente los archivos por lotes y de secuencia de comandos, no publicaré esto como respuesta, pero los súper usuarios reales saben que es mucho más fácil obtener la herramienta adecuada para el trabajo en lugar de escribir la suya;). Simplemente use una herramienta de cambio de nombre y probablemente pueda resolver esto en menos de un minuto, incluida la descarga. Personalmente he usado Rename Master y Bulk Rename Utility (contiene anuncios) y ambos pueden manejar esta y muchas otras molestas operaciones de archivos y carpetas. (No estoy afiliado con ninguna de las herramientas.)
Lilienthal
Use un programa como getright para descargar. Cuenta con una versión gratuita. Cada archivo debe descargarse en su propio hogar.
JDługosz

Respuestas:

29

¿Cómo puedo crear todas estas subcarpetas a la vez, usando mi esquema de nombres?

Si tuviera que crear las subcarpetas en un directorio específico, como C: \ Dropbox \ Development, ¿primero necesitaría cd a ese directorio? ¿Asumiendo que estoy usando el cmd shell?

Para crear las subcarpetas (subdirectorios) en un directorio específico (que no es el directorio actual), puede realizar una de las siguientes acciones:

  • cd C:\Dropbox\Development primero o
  • Cambia el md Lec-%%icomando a md C:\Dropbox\Development\Lec-%%i.

Nota:

  • mkdires sinónimo de mdy puede usarse en su lugar.

A continuación muestro ambas alternativas, primero desde un cmdshell (línea de comando), y segundo usando un archivo por lotes.

Como beneficio adicional (aunque no se solicitó en la pregunta original) también hay una bashalternativa de shell.


De una cmdconcha:

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

De un archivo por lotes:

@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

Notas:

  • 9es el número de inicio Cambiar si es necesario.
  • 1Es el paso. No cambies esto.
  • 120El número final. Cambie, si es necesario, el número del último directorio que necesita.
  • Para crear archivos en otro directorio, puede

    • cd C:\Dropbox\Development\Lec-%%i primero o
    • cambia el mdcomando a md C:\Dropbox\Development\Lec-%%i.

¿Hay alguna manera de hacer algo similar para Mac OSX desde el terminal Mac?

De una bashconcha:

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

O (para una versión más portátil)

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

Otras lecturas

DavidPostill
fuente
Si C:\Dropbox\Developmenttuviera que crear las subcarpetas en un directorio específico, como , ¿necesitaría cdprimero ese directorio? ¿Asumiendo que estoy usando el cmdshell? Y muchas gracias!
Manish Giri
@Manish sí, primero deberías ir cda la carpeta.
LPChip
No. Simplemente cambie el md Lec-%%iamd C:\Dropbox\Development\Lec-%%i
DavidPostill
En lugar de mdpor qué no usar mkdiren Windows? De esa manera es consistente con * nix y una diferencia menos para que la gente recuerde.
user541686
@Mehrdad Agregaré una nota a tal efecto.
DavidPostill
22

Hay otra manera fácil, para un número limitado de carpetas. Puede ser útil aquí o para alguien más.

En Windows podemos crear nombres de carpetas numerados creando una carpeta "lec (1)" y copiar y pegarla cuantas veces queramos, si pegamos 10 veces habrá 11 carpetas con los nombres "lect (1)" a "lec ( 10) - Copiar "

El único truco aquí es que la primera carpeta debe incluir paréntesis (n), donde n es el número desde donde comienza la numeración.

Windows incluye "- copiar" en y del nombre de la carpeta pegada "lec (1) - Copiar" :(

Si no le gusta, simplemente seleccione todo y cambie el nombre de lec (1) -> lec- (1) o cualquier cosa.

Se ajustarán todos los nombres de las carpetas y se eliminará "- copy";)

  • Ctrl + C - Copiar
  • Ctrl + V - Pegar
  • F2 - renombrar
  • Entrar: para finalizar el cambio de nombre.
  • ESC- para cancelar el cambio de nombre.
  • Ctrl + A o Ctrl + UP para seleccionar carpetas.

ingrese la descripción de la imagen aquí

shahid
fuente
2
+1 por enseñarme algo que no sabía. :)
LPChip
La animación (".gif") es más bien un buen toque, pero repetirla una y otra y otra vez ... sin fin, es muy molesto.
Kevin Fegan
44
@KevinFegan No estoy de acuerdo. Los GIF en bucle se aseguran de que el usuario (usted) pueda ver realmente la animación sin volver a cargar la página y desplazarse hacia abajo rápidamente para intentar verla. La mayoría de los navegadores no ofrecen botones de control GIF.
phyrfox
¡respuesta increíble y simplemente deja de mirar después de que entiendas el punto!
mothmonsterman
Esto no funcionará si no quieres paréntesis en el nombre de tu carpeta. Por ejemplo, puedo crear una lista de carpetas: x (0), x (1), x (2), ... x (N). Pero NO puedo crear una lista: x0, x1, x2, ... xN
Gil Epshtain
2

Esto no será mejor que un script para su escenario particular, pero es bueno saber esto cuando los nombres de sus carpetas no están relacionados: puede crear múltiples directorios desde la línea de comandos separándolos por un espacio:

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
fuente
3
Es amable de su parte señalar esto, pero no responde la pregunta ...
DavidPostill
1
@DavidPostill. Estoy de acuerdo, por eso lo redacté como lo hice. Pero es MUCHO mejor que crear carpetas 1 por 1. ¿Quizás debería eliminar la respuesta y hacer un comentario?
TTT
1

Puede encontrar que si crea carpetas numeradas con este nombre, no se mostrarán en el orden de clasificación adecuado (esperado):

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

El problema es que la parte del número de los nombres de las carpetas es de ancho variable, lo que afecta la forma en que se ordenan las carpetas.

Si es importante para usted que las carpetas estén ordenadas correctamente, use el archivo por lotes a continuación para crear carpetas con la parte numerada de los nombres de carpeta rellenados con "0" (ceros) para que todos los números tengan la misma longitud, de esta manera:

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

Aquí está el archivo por 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
fuente
1
La forma en que se ordenan depende de la herramienta. Explorer (y la mayoría de los otros administradores de archivos) los clasificará de forma intuitiva, con los Lec-10siguientes Lec-9.
Afrazier
Explorer utiliza la ordenación natural, por 2lo que se colocará antes de 10lo que cabría esperar (si observa la captura de pantalla del OP, 9 también se ordena antes de la 10). Sólo dirsufre de ese problema y las necesidades de 0los acolchados, pero el PO no sabía mucho acerca de la línea de comandos, así que no creo que sea un problema
phuclv
@phuclv - Sí, como usted dice, "OP no sabía mucho sobre la línea de comando ...". Por eso escribí esta respuesta. Para que OP sepa qué esperar y para proporcionar una solución (respuesta). Podía imaginarme a OP usando la excelente respuesta de DavidPostill, y luego confundirme al ver que dirlas carpetas de listas están fuera de servicio. Windows Como usted y un afrazier mencionaron, el Explorador de Windows ordenará / enumerará las carpetas correctamente, pero el OP estaba buscando una batchsolución, lo que significa que (muy probablemente) trabajarán desde el command prompt.
Kevin Fegan
0

Puede ejecutar este archivo por lotes en la misma carpeta que los archivos. Cada archivo se moverá a una carpeta del mismo nombre.

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 una advertencia a continuación para evitar el uso accidental.

@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
fuente
-1

En primer lugar, no leí todo su problema ... pero, por lo que puedo entender, desea cambiar el nombre de las carpetas en función de la lista ... bueno, hay dos métodos

Método 1 : si no tiene una lista de carpetas ... hay una solución alternativa ... debe ir a macOS con este árbol de carpetas ... y simplemente copiar el árbol de carpetas completo ... Lo que hará macOS es que copien contenido así como la lista de todas sus carpetas en términos de lista también ... ahora pegue TextEdit o cualquier software similar al Bloc de notas.

-Ahora supongo que tiene esa lista de carpetas con usted ... solo necesita un software de terceros para hacer el trabajo (ahora todos los pasos son para Windows) https://www.rename-expert.com -En términos Para usar este software, tenía que crear una nueva carpeta, una nueva carpeta-2, una nueva carpeta-4 todo lo que quisiera.

-Ahora en Rename Expert hay una opción para renombrar carpetas desde la base de la lista.

-Boom estás listo.

Método 2: si desea crear una copia espejo de todo el árbol de carpetas sin archivos.

-Beyond Compare es el software que lo necesitas. https://www.scootersoftware.com/support.php?zz=kb_copyfolderstructure

Utkarsh Patel
fuente
Esto supone incorrectamente que el usuario ya tiene el árbol de carpetas completo. Hay mejores soluciones que no requieren software adicional y / o desconocido.
jiggunjer