Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#10371
Cita de: scalverth en 20 Septiembre 2012, 18:16 PM
El problema se me presenta al usar el comando de la siguiente manera:
me esta sumando 12 días, no 12 meses.

Pero es que la función de ese script es sumar días, no meses, en el mismo título lo pone bien claro :-\.
CitarMediante fichero batch: sumar dÍas a una fecha
Funcionar, funciona...


A ver si este code que hago te sirve (Además de sumar los meses, modifica la fecha del PC con la nueva fecha generada):

PD: No es perfecto al calcular la diferencia de los días (Ej. Febrero)

@Echo off

:: By Elektro H@cker

REM Call :ADD_MONTH [FECHA] [MESES]
REM
REM Ejemplo:

Call :ADD_MONTH 01-01-2012 12
Call :ADD_MONTH 31-01-2013 1

Pause&Exit

::::::::::::::::::::::::::::::::::::

:ADD_MONTH
Setlocal enabledelayedexpansion

Set "Current_Date=/%DATE%" & Set "Current_Date=!Current_Date:/0=/!" & Set "Current_Date=!Current_Date:~1!"

Set "Custom_Date=-%~1" & Set "Custom_Date=!Custom_Date:-=/!"  & Set "Custom_Date=!Custom_Date:.=/!" & Set "Custom_Date=!Custom_Date:/0=/!" & Set "Custom_Date=!Custom_Date:~1!"

For /F "Tokens=1-3 delims=/" %%A in ('Echo "%Custom_Date%"') DO (Set /A "DD=%%A", "MM=%%B", "YYYY=%%C", "X=%~2")

For /L %%# in (1,1,%X%) DO (
Set /A "COUNT+=1"
If "!MM!" EQU "12" (Set /A "MM=0, YYYY+=1", "COUNT+=0")
Set /A "MM+=1"
)

Echo Fecha actual     : %Current_Date%
Echo Fecha introducida: %Custom_Date%
Echo Agregar meses    : %~2


Echo %DD%/%MM%/%YYYY% | DATE >NUL && Echo Nueva fecha      : %DD%/%MM%/%YYYY% | MORE || (Call :Retry)
ENDLOCAL
Goto:EOF

:Retry
For /L %%# in (1,1,31) DO (
set /A "DD-=1"
Echo !DD!/%MM%/%YYYY% | DATE >NUL && Echo Nueva fecha      : !DD!/%MM%/%YYYY% | MORE && Goto:EOF
)




Saludos.
#10372
¿Porqué dices que no te funciona con el mes de Diciembre?


C:\>"Archivo.bat" "20-12-2012" "12"
01/01/2013

C:\>"Archivo.bat" "20-12-2012" "-12"
08/12/2012


Saludos
#10373
He visto estos últimos años a mucha gente preguntando como delimitar un texto para cortarlo en trozos, y generar los subarchivos delimitados, así que me he visto en la casi necesidad de crear esta función para ese propósito, así les será más fácil.

@Echo OFF
Title TEXTCUTTER [By Elektro H@cker]

REM Call :TEXTCUTTER "ARCHIVO" "DELIMITADOR (A)" "DEIMITADOR (B)"

:: Ejemplo
Call :TEXTCUTTER "TEST.XML" "<fdaDeployJob" "</fdaDeployJob>"

Pause&Exit

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

:TEXTCUTTER
Echo # # # # # # # #
Echo #             #
Echo # TEXT CUTTER # by Elektro H@cker
Echo #             #
Echo # # # # # # # # | MORE

Setlocal enabledelayedexpansion

Set "FILE=%~nx1"
SET "Delimiter_A=%~2"
SET "Delimiter_B=%~3"

:: Comprobaciones iniciales
If Exist "%FILE%" (
Echo # Procesar archivo : "%FILE%"
Echo # Delimitar desde  : "%Delimiter_A%"
Echo # Delimitar hasta  : "%Delimiter_B%" | MORE
) ELSE (Echo Archivo "%FILE%" no encontrado & GOTO:EOF)

Type "%FILE%" | FIND "%Delimiter_A%" >NUL || (Echo No se ha encontrado ninguna cadena con el delimitador (A^): "%Delimiter_A%" & GOTO:EOF)
Type "%FILE%" | FIND "%Delimiter_B%" >NUL || (Echo No se ha encontrado ninguna cadena con el delimitador (B^): "%Delimiter_B%" & GOTO:EOF)

:: Creamos un archivo temporal y le agregamos X lineas en blanco para evitar errores en el SORT de Batch.
REM Ajustamos el número de lineas a agregar para agilizar el proceso de generación de archivos.
REM 100 lineas si el archivo original tiene menos de 100 lineas.
REM 1.000 lineas si el archivo original tiene entre 100 y 999 lineas.
REM 10.000 lineas si el archivo original tiene entre 1.000 y 9.999 lineas.
REM 100.000 lineas si el archivo original tiene entre 10.000 y 99.999 lineas.
REM 1.000.000 lineas si el archivo original tiene entre 100.000 y 999.999 lineas o más de 1.000.000 de lineas.
For /F %%a in ('Type "%FILE%" ^| find /V /C ""') do (Echo %%a>"%TEMP%\%FILE%" & FOR %%? IN ("%TEMP%\%FILE%") DO (SET /A "longitud=%%~z? - 3"))
Echo+ > "%TEMP%\%FILE%"
IF "%LONGITUD%" LEQ "2" (Set /A "LINES=100")
IF "%LONGITUD%" EQU "3" (Set /A "LINES=1000")
IF "%LONGITUD%" EQU "4" (Set /A "LINES=10000")
IF "%LONGITUD%" EQU "5" (Set /A "LINES=100000")
IF "%LONGITUD%" GEQ "6" (Set /A "LINES=1000000")
Echo Generando un archivo temporal, espere...
For /L %%X in (2,1,%LINES%) Do (Echo+ >> "%TEMP%\%FILE%")

:: Eliminamos las lineas en blanco del archivo original y copiamos el resto en el archivo temporal.
Type "%FILE%" | FINDSTR "." >> "%TEMP%\%FILE%"

:: Obtenemos el número de las lineas que contienen los delimitadores [A] y [B].
For /F "Delims=:" %%X in ('findstr /I /N "%Delimiter_A%" "%TEMP%\%FILE%"') do (Set /A "NUM_A+=1" && Set "Delimiter_A_!NUM_A!=%%X")
For /F "Delims=:" %%X in ('findstr /I /N "%Delimiter_B%" "%TEMP%\%FILE%"') do (Set /A "NUM_B+=1" && Set "Delimiter_B_!NUM_B!=%%X")

:: Cortamos y generamos los archivos.
Echo+ & Echo Generando los archivos, espere... | MORE

For /L %%X in (1,1,%NUM_B%) Do (
For /F "Tokens=* Delims=:" %%@ in ('Type "%TEMP%\%FILE%"') do (

Set /A "LINE+=1"
SET "String=%%@"

IF NOT "!LINE!" GTR "!Delimiter_B_%%X!" (
IF "!LINE!" GEQ "!Delimiter_A_%%X!" (
IF NOT "!STRING!" EQU " " (
ECHO !STRING!>> "%~n1_%%X_%~x1"
)
)
)
)
Set /A "LIN_A=!Delimiter_A_%%X! - %LINES%", "LIN_B=!Delimiter_B_%%X! - %LINES%"
Set /A "LINE=0"

Echo [+] "%~n1_%%X_%~x1"
Echo     (Linea !LIN_A! hasta Linea !LIN_B!^) | MORE
)
Setlocal disabledelayedexpansion

Echo Listo.
GOTO:EOF




PD: Recuerden, así pueden ocultar la salida:
Código (dos) [Seleccionar]
Call :TEXTCUTTER "ARCHIVO" "DELIMITADOR (A)" "DEIMITADOR (B)" >NUL

Espero que les séa de ayuda.
Saludos.




El archivo que he usado en el ejemplo:
Test.XML
Código (XML) [Seleccionar]
----------------------------------------------
<fdaDeployJob xml:lang="es-ES">
 <fileInfo>
  <displayName>Plus_IMS_ARG_DDDLEG_002_A_20120801.ZIP</displayName>
  <description>DATOS AR_DDDPLUS Argentina Ambiente plus Agosto 2012 CLIENT SERVICE, IMSHEALTH
   <additionalInfo></additionalInfo>
   <loginRequired>0</loginRequired>
   <approved>1</approved>
   <emailNotification>1</emailNotification>
  <activeDate>2012/09/19</activeDate>
  <expirationDate>2012/10/30</expirationDate>
   <fileRule>
     <productRestrictions>
     </productRestrictions>
     <companyRestrictions>
     </companyRestrictions>
     <productCompanyRestrictions>
     </productCompanyRestrictions>
     <individualRestrictions>
      <individualEmail owner="1">aduran@ar.imshealth.com</individualEmail>  
      <individualEmail owner="0">mechenique@ar.imshealth.com</individualEmail>
     </individualRestrictions>
<fileUploader> </fileUploader>
</fileRule>
 </fileInfo>
</fdaDeployJob>
----------------------------------------------  
<fdaDeployJob xml:lang="en-EN">
 <fileInfo>
  <displayName>Plus_IMS_ELEKTRO_H@CKER.ZIP</displayName>
  <description>blablablabla
   <additionalInfo></additionalInfo>
   <loginRequired>0</loginRequired>
   <approved>1</approved>
   <emailNotification>1</emailNotification>
  <activeDate>2011/11/22</activeDate>
  <expirationDate>2011/11/22</expirationDate>
   <fileRule>
     <productRestrictions>
     </productRestrictions>
     <companyRestrictions>
     </companyRestrictions>
     <productCompanyRestrictions>
     </productCompanyRestrictions>
     <individualRestrictions>
      <individualEmail owner="1">www.elhacker.net</individualEmail>    
      <individualEmail owner="0">Elektro H@cker</individualEmail>
     </individualRestrictions>
<fileUploader> </fileUploader>
</fileRule>
 </fileInfo>
</fdaDeployJob>
----------------------------------------------

#10375
Cita de: ADRIANGUDU en 19 Septiembre 2012, 15:59 PMnecesito generar varios archivos txt que corten cuando encuentre la linea </fdaDeployJob> y darle el nombre que en este caso sería Plus_IMS_ARG_DDDLEG_002_A_20120801.ZIP

EDITO: Código mejorado
@Echo OFF
Title By Elektro H@cker
Setlocal enabledelayedexpansion

:::::::::::::::::::
Set "FILE=Test.XML"
:::::::::::::::::::

If Exist "%FILE%" (Echo Archivo a procesar: "%FILE%" | MORE) ELSE (Echo Archivo "%FILE%" no encontrado & Exit /B 1)

:: Creamos un archivo temporal y le agregamos X lineas en blanco para evitar errores en el SORT de Batch.
REM Ajustamos el número de lineas a agregar para agilizar el proceso de generación de archivos.
REM 100 lineas si el archivo original tiene menos de 100 lineas.
REM 1.000 lineas si el archivo original tiene entre 100 y 999 lineas.
REM 10.000 lineas si el archivo original tiene entre 1.000 y 9.999 lineas.
REM 100.000 lineas si el archivo original tiene entre 10.000 y 99.999 lineas.
REM 1.000.000 lineas si el archivo original tiene entre 100.000 y 999.999 lineas o más de 1.000.000 de lineas.
For /F %%a in ('Type "%FILE%" ^| find /V /C ""') do (Echo %%a>"%TEMP%\%FILE%" & FOR %%? IN ("%TEMP%\%FILE%") DO (SET /A "longitud=%%~z? - 3"))
Echo+ > "%TEMP%\%FILE%"
IF "%LONGITUD%" LEQ "2" (Set /A "LINES=100")
IF "%LONGITUD%" EQU "3" (Set /A "LINES=1000")
IF "%LONGITUD%" EQU "4" (Set /A "LINES=10000")
IF "%LONGITUD%" EQU "5" (Set /A "LINES=100000")
IF "%LONGITUD%" GEQ "6" (Set /A "LINES=1000000")
Echo Generando un archivo temporal, espere...
For /L %%X in (2,1,%LINES%) Do (Echo+ >> "%TEMP%\%FILE%")

:: Eliminamos las lineas en blanco del archivo original y copiamos el resto en el archivo temporal.
Type "%FILE%" | FINDSTR "." >> "%TEMP%\%FILE%"

:: Obtenemos los nombres de las imagenes. ("<displayName>")
For /F "Tokens=3 Delims=:<>" %%# in ('Type "%FILE%" ^| FIND /I "displayName"') do (Set /A "NUM_NAME+=1" && Set "NAME!NUM_NAME!=%%#")

:: Obtenemos el número de las lineas que contienen los delimitadores [A] y [B]. ("<fdaDeployJob" y "</fdaDeployJob>")
For /F "Delims=:" %%X in ('findstr /I /N "<fdaDeployJob "  "%TEMP%\%FILE%"') do (Set /A "NUM_A+=1" && Set "Delimiter_A_!NUM_A!=%%X")
For /F "Delims=:" %%X in ('findstr /I /N "</fdaDeployJob>" "%TEMP%\%FILE%"') do (Set /A "NUM_B+=1" && Set "Delimiter_B_!NUM_B!=%%X")

:: Cortamos y generamos los archivos.
Echo+ & Echo Generando los archivos, espere... | MORE

For /L %%X in (1,1,%NUM_B%) Do (
For /F "Tokens=* Delims=:" %%@ in ('Type "%TEMP%\%FILE%"') do (

Set /A "LINE+=1"
SET "String=%%@"

IF NOT "!LINE!" GTR "!Delimiter_B_%%X!" (
IF "!LINE!" GEQ "!Delimiter_A_%%X!" (
IF NOT "!STRING!" EQU " " (
ECHO !STRING!>> "!NAME%%X!.XML"
)
)
)
)
Set /A "LIN_A=!Delimiter_A_%%X! - %LINES%", "LIN_B=!Delimiter_B_%%X! - %LINES%"
Set /A "LINE=0"

Echo [+] !NAME%%X!.XML
Echo     (Linea !LIN_A! hasta Linea !LIN_B!^) | MORE
)

Echo Listo.
Pause&Exit


 

Output:

Plus_IMS_ARG_DDDLEG_002_A_20120801.ZIP.XML:
<fdaDeployJob xml:lang="es-ES">
 <fileInfo>
  <displayName>Plus_IMS_ARG_DDDLEG_002_A_20120801.ZIP</displayName>
  <description>DATOS AR_DDDPLUS Argentina Ambiente plus Agosto 2012 CLIENT SERVICE, IMSHEALTH
   <additionalInfo></additionalInfo>
   <loginRequired>0</loginRequired>
   <approved>1</approved>
   <emailNotification>1</emailNotification>
  <activeDate>2012/09/19</activeDate>
  <expirationDate>2012/10/30</expirationDate>
   <fileRule>
     <productRestrictions>
     </productRestrictions>
     <companyRestrictions>
     </companyRestrictions>
     <productCompanyRestrictions>
     </productCompanyRestrictions>
     <individualRestrictions>
      <individualEmail owner="1">aduran@ar.imshealth.com</individualEmail>    
      <individualEmail owner="0">mechenique@ar.imshealth.com</individualEmail>
     </individualRestrictions>
<fileUploader> </fileUploader>
</fileRule>
 </fileInfo>
</fdaDeployJob>


Plus_IMS_ELEKTRO_H@CKER.ZIP.XML:
<fdaDeployJob xml:lang="en-EN">
 <fileInfo>
  <displayName>Plus_IMS_ELEKTRO_H@CKER.ZIP</displayName>
  <description>blablablabla
   <additionalInfo></additionalInfo>
   <loginRequired>0</loginRequired>
   <approved>1</approved>
   <emailNotification>1</emailNotification>
  <activeDate>2011/11/22</activeDate>
  <expirationDate>2011/11/22</expirationDate>
   <fileRule>
     <productRestrictions>
     </productRestrictions>
     <companyRestrictions>
     </companyRestrictions>
     <productCompanyRestrictions>
     </productCompanyRestrictions>
     <individualRestrictions>
      <individualEmail owner="1">www.elhacker.net</individualEmail>    
      <individualEmail owner="0">Elektro H@cker</individualEmail>
     </individualRestrictions>
<fileUploader> </fileUploader>
</fileRule>
 </fileInfo>
</fdaDeployJob>


Y con esto cierro el tema, haz el favor de leer las normas, has revivido un tema de 2 años de antiguedad sin aportar nada, debes formular tu pregunta en un nuevo topic.

Saludos.

EDITO 2: [BATCH] [APORTE] TextCutter (Delimita texto de un archivo y lo corta en trozos)
#10376
Scripting / Re: [BATCH] Cambiar extension a archivos
20 Septiembre 2012, 03:05 AM
Cita de: ovichan en 20 Septiembre 2012, 02:58 AM
Una preguntilla, por que usas %%~fi, no deberia valer con %%~nxi???

En la linea de comentario "REM" simplemente te daba un ejemplo de como expandir a la ruta completa del archivo porque tu lo estabas intentando con "%~dp0"
"NX" expande al nombre y extensión del archivo, No es suficiente a menos que el FOR recorra subdirectorios con el parámetro "\R", en el cual nisiquiera sería necesario expandir a un nombre o ruta, bastaría con usar la variable en sí misma "%%i"

Cita de: ovichan en 20 Septiembre 2012, 02:58 AMY.por que el uso de dobles %%, es para que las interprete como las variables locales del bucle??
Exacto sinó no las reconocería.

Si intentas ejecutar un FOR directamente desde la consola entonces solo debes usar un simbolo %.

EDITO: hmmm ahora que vuelvo a leer tu pregunta creo que te estabas refiriendo a la variable "%%FILENAME%%" es por lo mismo, por la recursividad, si.

Saludos
#10377
Scripting / Re: [BATCH] Cambiar extension a archivos
20 Septiembre 2012, 02:49 AM
Hay varias cosas mal y otras que sobran, Aquí tienes:

Código (dos) [Seleccionar]
@echo off
Title Renombrar extensiones de archivos

for %%i in (*.m4r) do (
REM Echo [+] %%~fi & Echo %%~dpni.m4a | MORE
ECHO [Renombrado]: %%~nxi ^> %%~ni.m4a
REN "%%~fi" "%%~ni.m4a"
)
pause>nul




saludos




Cita de: ovichan en 19 Septiembre 2012, 16:40 PM
Si a partir del set, lo saco del bucle, filename si pilla el nombre pero el rename sigue sin funcionar. Qué estoy haciendo mal.
Si quieres mostrar o usar la variable filename como intentabas, usa call y un simbolo de porcentaje extra:
Código (dos) [Seleccionar]
For... (
    Call Echo %%FILENAME%%
    Call RENAME "%%FILENAME%%"
)

O habilita la expansión de variables.
Código (dos) [Seleccionar]
Setlocal enabledelayedexpansion
For... (
    Echo !FILENAME!
)
#10378
Cita de: Songoku en 19 Septiembre 2012, 17:28 PM
UNICAMENTE el codec divx y el xvid como codecs de video

Perdón, un comentario que desvía un poco el tema:

Hace un año o dos tuve una duda similar sobre que codecs utilizar (Entre DIVXo XVID), Al final con la colaboración de Songoku me ayudó a decidir por instalar Xvid y dejar de lado divx ya que se supone que sirven igual indiferentemente uno del otro, Y ahora leo en tu comentario "instalar divx y xvid"

La pregunta es, ¿Es necesario instalar los dos codecs o con tener solamente uno de los dos instalado es suficiente?

Gracias.
#10379
Software / Re: Busco el Link de el siguiente programa
19 Septiembre 2012, 02:34 AM
http://exoshare.com/download.php?uid=ZYRBFJSM

También puedes usar NIRCMD para lo mismo.

Saludos
#10380
Si es a la carpeta "windows" (Y no una subcarpeta) prueba:

Código (dos) [Seleccionar]

@Echo Off
Takeown /F "%WINDIR%"
Icacls  "%WINDIR%" /Grant "%USERNAME%":(F)
Copy ...