Ms-Dos - Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

 
Vista:
sin imagen de perfil

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por Edwin (2 intervenciones) el 14/09/2016 15:08:25
Buen día
Tengo muchos archivos y necesito mover de 100 en 100 dentro de cada carpeta, pero no se cómo hacer para que haga ese conteo. Alguien me podría colaborar. Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por Antoni Masana (811 intervenciones) el 15/09/2016 07:44:58
Buenos días,

Como das poca información de lo que deseas hacer es difícil hacerse una idea del que y el porque y algunos cuantos ques más.

Falta saber

¿Por que de 100 en 100?
¿Que criterios se utilizan para mover?
¿Están todos en el mismo directorio de origen?
¿Cuantos ficheros hay que mover?

Una forma fácil y rápida es con el ratón y el explorador de Windows.


Esto es un BAT para crear ficheros BAT en el destino que especifiques con 100 ficheros del directorio Origen.

El fichero BAT nuevo se llamara Cuenta_101.bat el primero y el segundo Cuenta_102.bat y asi sucesivamente.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
 
set Dir_Origen=C:\Dir_Origen
set Dir_Destin=C:\Dir_Detino
set Dir_Tempor=C:\Dir_Tempor
 
set Num_Files=0
set Num_Conta=100
 
if exist %Dir_Tempor%\Cuenta_*.bat del %Dir_Tempor%\Cuenta_*.bat
 
cd %Dir_Origen%
 
FOR %%a in (*.*) do call :Lista %%a
cd \Tmp
GOTO :EOF
 
:Lista
   if %Num_Files% == 0 set /A Num_Conta+=1
   if %Num_Files% == 0 set File=%Dir_Tempor%\cuenta_%Num_Conta%.bat
   if %Num_Files% == 0 echo %File%
 
   Set /A Num_Files+=1
 
   echo MOVE %Dir_Origen%\%1 %Dir_Destin%\%1 >>%File%
 
   if %Num_Files% == 100 set Num_Files=0
   goto :EOF


Las Lineas 3, 4 y 5 Debes especificar el Directorio Origen, destino y temporal para crear los BAT.

Seguramente no te soluciona el problema pero como no cual es poco más puedo hacer.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por Edwin (2 intervenciones) el 15/09/2016 16:18:28
Gracias por la respuesta
Para aclarar lo que es necesario saber acerca de la pregunta que hice.
-Todos los ficheros estan en el mismo directorio de origen.
-Son mas de 20 mil ficheros, por eso no lo hice por el explorador.
-No hay un criterio específico por el cuál mover.
-De 100 en 100 es porque necesito organizarlos por carpetas de esa manera y que en cada una contenga esa cantidad (Carpeta 1, Carpeta 2,...), es decir se crearían aproximadamente unas 200 carpetas.

El .bat que me describió antes seguiría funcionando?
Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por Antoni Masana (811 intervenciones) el 16/09/2016 07:20:04
No te sirve como tal pero ahora que me has aclarado algunos puntos te hago unas pequeñas modificaciones

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@echo off
 
set Dir_Origen=C:\Dir_Origen
set Dir_Destin=C:\Dir_Detino
set Dir_Tempor=C:\Dir_Tempor
 
set Num_Files=0
set Num_Conta=100
 
if exist %Dir_Tempor%\Cuenta_*.bat del %Dir_Tempor%\Cuenta_*.bat
 
cd %Dir_Origen%
 
FOR %%a in (*.*) do call :Lista %%a
cd \Tmp
GOTO :EOF
 
:Lista
   if %Num_Files% == 0 set /A Num_Conta+=1
   if %Num_Files% == 0 set File=%Dir_Tempor%\Move_Files_%Num_Conta%.bat
   if %Num_Files% == 0 echo IF not exist "%Dir_Destin%_%Num_Conta%\nul" MD "%Dir_Destin%_%Num_Conta%" >%File%
   if %Num_Files% == 0 echo %File%
 
   Set /A Num_Files+=1
 
   echo MOVE "%Dir_Origen%\%1" "%Dir_Destin%_%Num_Conta%\%1" >>"%File%"
 
   if %Num_Files% == 100 set Num_Files=0
   goto :EOF

He añadido la línea 21 y he realizado una modificación en la línea 26 y veras que ahora esta toda roja. Te explico:

- En mi primera versión suponía que los directorios no tenían espacio en el Nombre, ahora si pueden ser con espacios.

- Presupongo que los ficheros no tienes espacios en el nombre. si hay algun nombre con espacio la cosa no funciona pero se puede arreglar

- En la línea set Dir_Origen= debes poner el directorio donde estan los 20.000 ficheros

- En la línea set Dir_Destin= debes poner el directorio donde se moveran..

Para entenderlo mejor y con menos palabras pongamos un ejemplo:

set Dir_Origen=C:\BMP
set Dir_Destin=C:\BMP\PACK


Copiara los ficheros de en los Directorios C:\BMP\PACK_001 - C:\BMP\PACK_002, etc. y creara unos 200 directorios

Si el destino es por ejemplo

C:\BMP\PICTURE\PACK

y no existe el directorio C:\BMP\PICTURE lo creara y después creara C:\BMP\PICTURE\PACK_001

IMPORTANTE revisa los BATs antes de ejecutarlos para comprobar que estén bien. Esta versión crea 200 BATS que quizás son muchos ahora que lo pienso. Te pongo a continuación la version creando un solo BAT para mover TODOS los ficheros.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@echo off
 
set Dir_Origen=C:\Dir_Origen
set Dir_Destin=C:\Dir_Detino
set Dir_Tempor=C:\Dir_Tempor
 
set File=%Dir_Tempor%\Move_Files.bat
 
echo @ECHO OFF >%File%
echo @ECHO.   >>%File%
 
set Num_Files=0
set Num_Conta=100
 
if exist %Dir_Tempor%\Cuenta_*.bat del %Dir_Tempor%\Cuenta_*.bat
 
cd %Dir_Origen%
 
FOR %%a in (*.*) do call :Lista %%a
cd \Tmp
GOTO :EOF
 
:Lista
   if %Num_Files% == 0 set /A Num_Conta+=1
   if %Num_Files% == 0 set    Dir=%Dir_Destin%_%Num_Conta%
 
   if %Num_Files% == 0 echo. >>%File%
   if %Num_Files% == 0 echo IF not exist "%Dir%\nul" MD "%Dir%" >>%File%
   if %Num_Files% == 0 echo. >>%File%
 
   Set /A Num_Files+=1
 
   echo MOVE "%Dir_Origen%\%1" "%Dir%\%1" >>"%File%"
 
   if %Num_Files% == 100 set Num_Files=0
   goto :EOF


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por antonio cardozo (2 intervenciones) el 01/06/2017 01:52:20
buenos dias
señor Antoni Masana corrí su programa para el mismo problema de Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD según la solicitud de Edwin el 15/09/2016
me sale que el sistema no puede encontar la ruta especificada el bat lo corrí desde c y desde el directorio de origen por favor me ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por Antoni Masana (811 intervenciones) el 01/06/2017 19:28:12
Contestado por E-Mail
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cómo mover determinada cantidad de archivos dentro de una carpeta desde CMD

Publicado por Antonio (2 intervenciones) el 04/06/2017 17:43:56
RESPUESTA EXCELENTE GRACIAS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar