Ms-Dos - crear archivo para FOR?

 
Vista:
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

crear archivo para FOR?

Publicado por Yusniel (12 intervenciones) el 22/10/2020 03:31:26
para un comando base de cmd siempre viene bien el .log, pero se podra crear un log para esto?

Trabajo con mucho flujo de informacion y temo que un dia corra mi .bat en algun directorio que no deba y al menos con el log podria revertir el proceso

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
@echo off
 
::SACA LOS ARCHIVOS DE SUS CARPETAS Y SUBCARPETAS Y LOS PONE EN LA RAIZ DONDE SE EJECUTA EL .BAT
for /R %%x in (*.*) do move "%%x" ""
 
:: BORRA LAS CARPETAS VACIAS
for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do rd "%%d"
 
::CREA CARPETAS CON LOS NOMBRES DE LOS ARCHIVOS Y LOS MUEVE AHI
for %%a in (*.swf, *.vob, *.mpg, *.wmv, *.3gp, *.ogg, *.ts, *.mov, *.flv, *.gif, *.webm, *.mkv, *.mp4, *.wmv, *.dat, *.rmvb, *.m4v, *.avi) do call :Copiar "%%a" "%%~na"
goto :EOF
 
:Copiar
    set Archivo=%1
    set Directorio=%2
 
    set Archivo=%Archivo:~1,-1%
    set Directorio=%Directorio:~1,-1%
 
    mkdir "%cd%\%Directorio%"
 
    move "%Archivo%" "%cd%\%Directorio%"
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

crear archivo para FOR?

Publicado por Antoni Masana (811 intervenciones) el 23/10/2020 00:41:15
Hay dos forma de hacerlo, la sencilla y la mas compleja. Y seguro que hay más formas pero te cuento solo dos.

SENCILLO:

Cambias el echo off del inicio por un echo on y ejecutas el bat asi:

1
mi_proceso.bat  >fichero.log  2>&1

Y ya tiene un log que será largo, tedioso de analizar y por supuesto debes recordar de poner lo que indico.

COMPLEJO

Modifico el código:

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
37
38
39
40
41
42
43
44
45
46
@echo off
 
set dd=%Date:~0,2%
set mm=%Date:~3,2%
set aa=%Date:~6,4%
set LOG=C:/logs/log-%aa%.%mm%.%dd%.txt
 
call :Main >%LOG% 2>&1
goto :EOF
 
:Main
    set Ext_1=*.swf, *.vob,  *.mpg, *.wmv, *.3gp, *.ogg, *.ts,  *.mov,  *.flv,
    set Ext_2=*.gif, *.webm, *.mkv, *.mp4, *.wmv, *.dat, *.rmvb, *.m4v, *.avi
    echo.
    echo === SACA LOS ARCHIVOS DE SUS CARPETAS Y SUBCARPETAS Y LOS PONE EN LA RAIZ DONDE SE EJECUTA EL .BAT
    echo.
    for /R %%x in (*.*) do (
        echo    Mueve %%x
        move "%%x" ""
    )
    echo.
    echo === BORRA LAS CARPETAS VACIAS
    echo.
    for /f "usebackq delims=" %%d in (`"dir /ad/b/s | sort /R"`) do (
        echo.   Borra %%d
        rd "%%d"
    )
    echo.
    echo === CREA CARPETAS CON LOS NOMBRES DE LOS ARCHIVOS Y LOS MUEVE AHI
    echo.
    for %%a in (%Ext_1% %Ext_2%) do (
        echo.   Copia %%a a %%~na
        call :Copiar "%%a" "%%~na"
    goto :EOF
 
:Copiar
    set Archivo=%1
    set Directorio=%2
 
    set Archivo=%Archivo:~1,-1%
    set Directorio=%Directorio:~1,-1%
 
    mkdir "%cd%\%Directorio%"
 
    move "%Archivo%" "%cd%\%Directorio%"
    goto :EOF

Y de esta forma te crea en el directorio LOGS un fichero para cada día que lo ejecutes y si quieres también le puedes añadir la hora al nombre del log.

Este es más agradable de leer y de ver los errores. Y ahora solo tiene que ejecutar el BAT como lo haces hasta ahora.

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
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

crear archivo para FOR?

Publicado por Yusniel (12 intervenciones) el 23/10/2020 16:54:55
ñoosss.. que bueno, ahora si tengo todo bien organizado en un log, inclusive puedo crear el log listo para solo ejecutar dentro de un .bat y me regresa todo a donde estaba como si nada hubiera ocurrido(me pondre a ello ahora mismo)

muchisimas gracias antoni, siempre tan servicial

a la persona que vaya a utilizar el codigo le señalo:

CIERREN EL PARENTISIS PARA QUE SE EJECUTE BIEN ESA PARTE DEL CODIGO:

1
2
3
4
5
6
echo === CREA CARPETAS CON LOS NOMBRES DE LOS ARCHIVOS Y LOS MUEVE AHI
    echo.
    for %%a in (%Ext_1% %Ext_2%) do (
        echo.   Copia %%a a %%~na
        call :Copiar "%%a" "%%~na")  <======(quiten estos es solo para señalar el parentisis)
    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
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

crear archivo para FOR?

Publicado por Antoni Masana (811 intervenciones) el 23/10/2020 20:47:20
Me faltaba cerrar el paréntesis de uno de los FOR.
Lo siento, se me paso.

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
sin imagen de perfil
Val: 31
Ha disminuido 1 puesto en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

crear archivo para FOR?

Publicado por Yusniel (12 intervenciones) el 26/10/2020 21:57:55
No. Para nada, muchísimas gracias a ti. Lo menos que podía hacer era leer bien el código, así aprendo, 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