Ms-Dos - copiar archivos con el mismo nombre y destino

 
Vista:
sin imagen de perfil

copiar archivos con el mismo nombre y destino

Publicado por itachi99 (4 intervenciones) el 20/03/2014 23:26:27
hola a todos me podria ayudar

quiero hacer un bat q copie todos los archivos .txt de un directorio y sub directorios a una carpeta determinada
el problema es q cuando se encuentran archivos con el mismo nombre se reemplazan y no puedo hacer q se renombren

mi bat es este

1
2
3
4
5
='editor_indent'>@echo on
dir *.txt /s /b /a hs  > list.list
mkdir files
for  /F "delims=;" %%i in (list.list) do xcopy "%%i" ".\files\" /h
pause

espero me ayuden estoy buscando algun modificador del xcopy pero no encuentro nada

saludos
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

copiar archivos con el mismo nombre y destino

Publicado por Antoni Masana (811 intervenciones) el 21/03/2014 07:18:51
La cosa es un poco más compleja.

El XCOPY no te soluciona el problema.

Para empezar entiendo que buscas todos los ficheros con extensión TXT que tengan el atributo de Oculto y/o Sistema

Es raro pero bueno si aceptamos Windows como sistema operativo todo es posible.

Te escribo lo que debe hacer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo on
dir *.txt /s /b /a hs  > list.list
mkdir files
for  /F "delims=;" %%i in (list.list) do goto:Copia_1  %%~ni %%~xi
del list.list
pause
goto:EOF
 
:Copia_1
   SET n=0
   SET File=%1.%2
 
:Copia_2
   IF not  exist %File% goto Copia_3
   SET /A n+=1
   SET File=%1%n%.%2
   goto Copia_1
 
:Copia_3
   xcopy "%%i" ".\files\" /h
   goto:EOF

Si tienes:

1
2
3
.\popo.txt
.\dir_A\popo.txt
.\dir_B\\popotxt

el resultado será:

1
2
3
.\files\popo.txt
.\files\popo1.txt
.\files\popo2.txt

Si lo ejecutas por segunda vez tendrás

1
2
3
4
5
6
7
8
9
10
.\files\popo.txt
.\files\popo1.txt
.\files\popo2.txt
.\files\popo3.txt
.\files\popo4.txt
.\files\popo5.txt
.\files\popo6.txt
.\files\popo7.txt
.\files\popo11.txt
.\files\popo21.txt

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

copiar archivos con el mismo nombre y destino

Publicado por itachi99 (1 intervención) el 21/03/2014 08:53:22
gracias antoni...
la verdad la linea en donde listo los archivos txt, la recicle de otro bat q tenia por ahi

me quedo una duda en esta parte

1
2
3
4
:Copia_2 IF not exist %File% goto Copia_3
SET /A n+=1
SET File=%1%n%.%2
goto Copia_1

creo q lo estoy interpretando mal pero
en la linea del if como comprueba q existe o no el archivo en el directorio de destino?




muchas gracia se te agradece la 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

copiar archivos con el mismo nombre y destino

Publicado por Antoni Masana (811 intervenciones) el 21/03/2014 09:10:01
Hay un par de errores en mi BAT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo on
dir *.txt /s /b /a hs  > list.list
mkdir files
for  /F "delims=;" %%i in (list.list) do goto:Copia_1  %%~ni %%~xi
del list.list
pause
goto:EOF
 
:Copia_1
   SET n=0
   SET File=%1.%2
 
:Copia_2
   IF not  exist .\files\%File% goto Copia_3
   SET /A n+=1
   SET File=%1%n%.%2
   goto Copia_2
 
:Copia_3
   xcopy "%%i" ".\files\" /h
   goto:EOF
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

copiar archivos con el mismo nombre y destino

Publicado por itachi99 (4 intervenciones) el 21/03/2014 10:16:46
viendo tu bat me di cuenta de la forma en q puede hacerse
yo ya habia intentado con la variable n pero no estaba andando bien la parte del incremento
me sirvio bastante

dejo mi bat TERMINADO q lo hice en base al tuyo

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
dir *.txt /s /b  > list.list
if not exist ".\files" mkdir files
 
for /F "delims=;" %%i in (list.list) do (
	set ruta=%%i
	set nombre=%%~ni
	set ext=%%~xi
	call :copia1
	)
 
del list.list
pause
goto:EOF
 
:Copia1
	SET n=0
	SET File=%nombre%%ext%
 
 
:Copia2
	IF exist ".\files\%File%" goto Copia3
	xcopy "%ruta%" ".\files\%file%"
	goto:EOF
 
:Copia3
	SET /A n+=1
	SET File=%nombre%%n%%ext%
	goto Copia2

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