Ms-Dos - Copiar y Renombrar Archivos desde una carpeta a otra, solo un intervalo de los Archivos en carpeta

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 6 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar y Renombrar Archivos desde una carpeta a otra, solo un intervalo de los Archivos en carpeta

Publicado por Nestor (3 intervenciones) el 28/06/2017 17:20:50
Estimados, Buenos Dias,

estoy queriendo hacer un .bat que haga lo siguiente:

tengo estos archivos en una carpeta de red.

data_0001.txt
data_0002.txt
data_0003.txt
data_0004.txt
data_0005.txt
...
data_0020.txt

la idea es mover los archivos a otra ruta c:\file_bkp

y una vez ahi cambiarles la extension,

data_0004.bkp
data_0005.bkp
data_0006.bkp
data_0007.bkp

el problema surge que lo que quiero copiar es una parte de los archivos de la carpeta origen.

desde:
data_0004.txt
hasta
data_0015.txt

este es el ejemplo.-

yo diria hacerlos con un for c=4 hasta un c=15
pero no encuentro la manera de hacerlo.

Esto es lo que tengo. (tocando y tocando, logre solo modificar el primero, pero no puedo hacer funcionar para que haga el for.- tengo poco conocimiento en .bat)

@echo on

setlocal enableDelayedExpansion
SETLOCAL ENABLEEXTENSIONS

set /a C=4


for /a (%C% leq 0) do (
for %%F in (CFE_000!C!.alt) do (

set "name=%%F" ren "!name!" "!name:.alt=.bkp!"
set /a C+=-1
)
)

pause > nul



Muchas Gracias por la Ayuda


PD: alguien sabe un buen manual para poder aprender a hacer .bat???

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 y Renombrar Archivos desde una carpeta a otra, solo un intervalo de los Archivos en carpeta

Publicado por Antoni Masana (811 intervenciones) el 29/06/2017 07:10:27
Puedes hacerlo de varias formas, te muestro dos de ellas

Opcion - 1

1
2
3
4
5
@echo off
FOR %%a IN (04 05 06 07 08 09 10 11 12 13 14 15) DO (
    copy R:\file_txt\data-00%%a.txt C:\file_bkp\data-00%%a.bkp
    del  R:\file_txt\data-00%%a.txt
)

Opcion - 2

1
2
3
4
5
6
7
8
9
@echo off
FOR /L %%a IN (104, 1, 115) DO CALL :Copiar %%a
goto :EOF
 
:Copiar
    set num=%1
    set num=%num:~1,2%
    copy R:\file_txt\data-00%Num%.txt C:\file_bkp\data-00%Num%.bkp
    del  R:\file_txt\data-00%Num%.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
sin imagen de perfil
Val: 4
Ha aumentado su posición en 6 puestos en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Copiar y Renombrar Archivos desde una carpeta a otra, solo un intervalo de los Archivos en carpeta

Publicado por Nestor (3 intervenciones) el 03/07/2017 16:43:46
Muchas gracias por la respuesta;

muy amable,

me podrias explicar que significara esto.

FOR /L %%a IN (104, 1, 115)


y esto

set num=%1
set num=%num:~1,2%


que es lo que esta haciendo??


Muchas gracias por su tiempo.

Saludos,
Nestor Peña
Argentina-
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 y Renombrar Archivos desde una carpeta a otra, solo un intervalo de los Archivos en carpeta

Publicado por Antoni Masana (811 intervenciones) el 04/07/2017 07:42:36
Una de las características del FOR es que tiene varias formas de trabajar y algunas de ellas incorporadas en versión posteriores versiones.

En el inicio de los tiempos (inicio del MS-DOS por las décadas 70/80) el FOR era muy simple ahora permite muchas más opciones. Para ver todas las posibilidades ejecuta FOR /?

Si sabes Visual Basic este FOR es igual a la sintaxis:

1
2
3
FOR A=104 TO 115 STEP 1
    ...
NEXT

Explicación: Toma un valor inicial de 104, incrementa en 1 hasta el valor 115

Otra cuestión es el SET, esta instrucción y el FOR están peleadas y para poder ejecutarla en la misma secuencia hay que hacer algunos trucos.

La instrucción que ejecuta el FOR es un CALL a una etiqueta del propio BAT (en este caso :Copia) como si llamase a otro BAT y le pasa como parámetro el valor de la variable %%a (Help CALL /?)

Cuando llega a :Copia recibe la información como un parámetro del BAT y lo recoge con %1 y lo asigna a una variable Num.

La siguiente instrucción toma los dos últimos caracteres de Num.

¿Por qué hago esto tan complicado? Pues muy sencillo para conservar el CERO no significativo.

De la otra forma devuelve 104 y tomando los dos últimos caracteres tengo 04.

Si hago esto:
1
FOR %%a IN (04, 1, 15) DO …

Devuelve: 4 y no 04, 5 y no 05, etc. y me alta un CERO.

Con esta opción en lugar del segundo SET tendría que hacer esto:

1
2
3
4
5
6
:Copiar
    set num=%1
    if %Num% LSS 10 Set FILE=data-000%Num%
    if %Num% GEQ 10 Set FILE=data-00%Num%
    copy R:\file_txt\%File%.txt C:\file_bkp\%File%.bkp
    del  R:\file_txt\%File%.txt

Para más información
1
2
3
4
FOR /?
CALL /?
SET /?
IF /?

Saludos.
\\//_
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