Autor
|
Tema: almacenar salida de un programa en una variable Vbscript ?? (Leído 6,602 veces)
|
kapo.damy
Desconectado
Mensajes: 6
|
hola a todo el foro estoy armando un script vbs en donde lee un archivo (sus datos mediante un programita), lo calcula, y lo convierte(con otro programita). pero me he clavado justo en el inico . estoy necesitando guardar la salida de un programa ms-dos en una variable, el programa me tira estos datos: decoding bgm_stg230_fct.aax sample rate 48000 Hz channels: 2 loop start: 1941380 samples (40.4454 seconds) loop end: 8974667 samples (186.9722 seconds) stream total samples: 8974667 (186.9722 seconds) encoding: CRI ADX 4-bit ADPCM layout: AAX blocked, 18-byte interleaved metadata from: CRI AAX header samples to play: 16007954 (333.4990 seconds)
ya habia realizado antes un script batch donde realiza esta accion con el comando for, aca una muestra: for /f "skip=1 tokens=*" %%i in ('stream_info.exe -m %1') do ( set "freq=%%i" goto stopbucle
:stopbucle set conversor=ffmpeg set recodificador=adxencd
mi script batch leia 3 lineas que arrojaba el programa y las almacenaba en variables. mi problema en batch fue que para poder filtrar y calcular (con decimales ), me vi obligado a usar demasiadas veces el comando call. por lo que se me hace un lio tremendo es por eso que decidi armarlo en vbscript (deberia ser menos engorroso). y aun no he encotrado la forma de almacenar las tres lineas vitales para el Vbscript, es mas creo que no se puede . desde ya espero que me puedan ayudar
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
Leminy
Desconectado
Mensajes: 12
"La Información Es Saber Y El Saber Es Poder"...
|
Lo Que Dice NovLucker Es Cierto, Aunque... Sin Ir En Tu Contra NovLucker, Es Que También Puedes: Direcciónes la Salida A Una Archivo Y Leas Las Lineas De Ese Archivo En Busca De Un String Constante("Para Saber Que Esa Es La Linea Indicada"), Y Para Cada Linea Que Corresponda, Meterla En Un "Array"... Si Quieres Un "Code Example" Deberas Indicarme Que Es Lo Que Buscas Exactamente... Suerte
|
|
|
En línea
|
|
|
|
kapo.damy
Desconectado
Mensajes: 6
|
muchisimas gracias novlucker, no tenia idea que habia una version mas completa del tutorial (yo tenia un pdf ). Lo Que Dice NovLucker Es Cierto, Aunque... Sin Ir En Tu Contra NovLucker, Es Que También Puedes: Direcciónes la Salida A Una Archivo Y Leas Las Lineas De Ese Archivo En Busca De Un String Constante("Para Saber Que Esa Es La Linea Indicada"), Y Para Cada Linea Que Corresponda, Meterla En Un "Array"... Si Quieres Un "Code Example" Deberas Indicarme Que Es Lo Que Buscas Exactamente... Suerte bien , es una buena idea usar un array Leminy. si entendi bien cada linea del programa se almacenara en cada matriz de la variable (array). y que bueco exactamete, almacenar en una variable (o como decis vos en un array) las lineas que da el programa. rem rutina de obtencion de datos [freq] [loop inicio] [loop final] rem la linea 2 corresponde a la frequencia rem %1 parametro que contiene la ruta del archivo for /f "skip=1 tokens=*" %%i in ('test.exe -m %1') do ( set "freq=%%i" goto a )
:a rem la linea 4 corresponde al loop de inicio for /f "skip=3 tokens=*" %%i in ('test.exe -m %1') do ( set "inicio=%%i" goto b )
:b rem lectura y obtencion de la linea 5, loop de final for /f "skip=4 tokens=*" %%i in ('test.exe -m %1') do ( set "final=%%i" goto c )
:c set freq=%freq:~12% set freq=%freq:~-8,5% set freq=%freq:~-5,2%
set inicio=%inicio:~12% call :iniciofilt %inicio%
:iniciofilt set "inicio=%1"
set final=%final:~10% call :finalfilt %final% :finalfilt set "final=%1"
echo info_reader ha leido freq:%freq% inicio:%inicio% final:%final% call :calcuradora_con_decimales_nax.bat if errorlevel==1 (msg * "error al leer la info del archivo o llamar a subrutina"&exit)
ahora que me di cuenta que se puede realizar dicha accion, puedo hacer otra pregunta, es posible cambiar o agregar la ruta de los programas. como por ejemplo en batch con la variable %path%. si no se puede no renieguen .
|
|
|
En línea
|
|
|
|
Novlucker
Ninja y
Colaborador
Desconectado
Mensajes: 10.683
Yo que tu lo pienso dos veces
|
set objshell = createobject("wscript.shell") msgbox objshell.expandenvironmentstrings("%path%")
Saludos
|
|
|
En línea
|
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD "Hay dos cosas infinitas: el Universo y la estupidez humana. Y de la primera no estoy muy seguro." Albert Einstein
|
|
|
kapo.damy
Desconectado
Mensajes: 6
|
NOVLUCKER YO PRECISAMENTE BUSCABA OBTENER EL DIRECTORIO ACTUAL....... TERMINE EL SCRIPT !!!!!!!! Y ES 99.999% FUNCIONAL ACA SE LOS DEJO EL SCRIPT + LOS ARCHIVOS NECESARIOS PARA SU FUNCIONAMIENTO..... LES DOY LAS GRACIAS AL FORO Y A LOS 2 MODERADORES POR SU ATENCION desde ya muchisimas gracias Código: 'VGMstream2ADXenc ver 2.4 rev 257 Hecho por Kapodamy! ' Uso VGMstream2ADXenc.vbs -e [ARCHIVO] -f [FREQUENCIA DE CONVERSION] -s [CARPETA DE SALIDA] -mono
' -e [ARCHIVO] archivo a convertir; debe ser soportado por el vgmstream y NO PUEDE ' TENER MAS DE 2 CANALES. en caso de que tuviera mas de 2 canales. la conversion ' sera reducida a 2 canales. si esta presente el parametro "-mono" la reduccion sera a un unico canal.
' -f [FRECUENCIA DE CONVERSION] especifica la frequencia de conversion de los ADX en hertz.SIN COMILLAS ;) ' si no se especifica la frequencia de salida sera igual a la de entrada.
' -s [CARPETA DE SALIDA] especifica la carpeta en donde se almacenaran los ADX, en lo posible SIN CONTENER ESPACIOS. ' SE RECOMIENDA NO ESPECIFICAR SUBCARPETAS como por ejemplo "archivos_adx\wii_rips\ost", de lo contrario usar "COMILLAS" ' el parametro es directamente pasado al ADXenc. ESTE PARAMETRO ES OPCIONAL
' -mono especifica que la salida ADX no es en stereo sino en mono. NOTA:PUEDE CAUSAR ERRORES EN LOS LOOP's DE LOS ADX's
'Ejemplos de uso ' VGMstream2ADXenc.vbs -e bgm_stage01.strm -f 32000 -s archivos_adx convertira el archivo bgm_stage01.strm a bgm_stage01.adx dentro de la carpeta archivos_adx con una frequencia de 32000hz. ' VGMstream2ADXenc.vbs -e bgm_stage01.strm -s "my_adxs\ost\rips" convertira el archivo bgm_stage01.strm a bgm_stage01.adx dentro de la carpeta my_adxs\ost\rips. ' VGMstream2ADXenc.vbs -e bgm_stage01.strm -mono convertira el archivo bgm_stage01.strm a bgm_stage01.adx pero en mono sin cambiar la frequencia. ' 'agradecimientos a novlucker y al foro el hacker '----------------------------------------------------------INICIO DEL SCRIPT-----------------------------------------------------------------------------------------------------------------------
dim detect dim loop_total dim exist_lps dim contc dim no_loop_index dim hz_index dim freq_index dim samplei_index dim samplef_index dim samplefd_index dim sampleid dim estado dim freq_real dim inicio dim final dim loop_inicio_dec dim loop_final_dec dim no_loop dim loop_inicio_real dim loop_inicio dim dec_corr_i_index dim canales_index dim canales_index_d dim r dim i dim argumento_mono dim argumento_adx_dir dim argumento_archivo dim archivo_nombre_index dim loop_iniciodec dim loop_finaldec dim dec_corr_i dim loop_final dim vgmstream dim ffmpeg dim adxencd dim argumentos_index
Set objfso = createobject("scripting.filesystemobject") Set objshell = createobject("wscript.shell") '----------------rutina de seleccion de argumentos------------------ ' 0 1 2 3 4 5 6 ' Uso VGMstream2ADXenc.vbs -e [ARCHIVO] -f [FREQUENCIA DE CONVERSION] -s [CARPETA DE SALIDA] -mono
If WScript.Arguments.count < 2 Then ' rutina de deteccion de parametros msgbox "Uso VGMstream2ADXenc.vbs -e [ARCHIVO] -f [FREQUENCIA DE CONVERSION] -s [CARPETA DE SALIDA] -mono"&chr(13)&"el parametro minimo es: -e [ARCHIVO]"&chr(13)&"los demas parametros son opcionales",32,"VGMstream2ADXenc - uso incorrecto" WScript.Quit else argumentos_index=WScript.Arguments.count-1 End If 'seleccion de parametros for i=0 to argumentos_index select case WScript.Arguments(i) case "-e" r=i+1 archivo=WScript.Arguments(r) if archivo="" then msgbox "error en -e. archivo no especificado",16,"VGMstream2ADXenc" wscript.quit end if
case "-f" r=i+1 argumento_freq=1 freq_conv=WScript.Arguments(r) if freq_conv="" then msgbox "error en -f. frequencia no especificada",16,"VGMstream2ADXenc" wscript.quit end if
case "-s" r=i+1 argumento_adx_dir=1 adx_dir_out=" "&WScript.Arguments(r) if adx_dir_out="" then msgbox "error en -s. carpeta de salida no especificada",16,"VGMstream2ADXenc" wscript.quit end if
case "-mono" argumento_mono=1
end select next
rem codigos de prueva 'archivo="bgm_boss_shipboss.aax" 'archivo="bgm_stg230_fct.aax" 'FREQ_CONV=32000 'argumento_freq=1
rem rutina de deteccion de errores en parametros if archivo="" then msgbox "Error, archivo no especificado"&chr(13)&"parametro minimo: "&WScript.Scriptname&" -e [ARCHIVO]",16,"VGMstream2ADXenc" wscript.quit end if
if not argumento_adx_dir=1 then adx_dir_out=""
'-----------sub-rutina obtencion del nombre del archivo Set archivo_n = objfso.getfile(archivo) archivo_nombre=archivo_n.name
for i=255 to 0 step -1 detect=mid(archivo_nombre,i,1) if detect="." then archivo_nombre_index=i-1 i=0 end if next archivo_nombre=mid(archivo_nombre,1,archivo_nombre_index) '----------fin de sub-rutina con archivo_nombre archivo_conv=archivo_nombre&".wav" archivo_tmp=archivo_nombre&"_tmp"&".wav" '--------------fin de rutina de seleccion de argumentos con: archivo archivo_tmp archivo_conv ' freq_conv adx_dir_out argumento_mono 'msgbox archivo&" "&archivo_nombre&" "&archivo_conv&" "&archivo_tmp
directorio_actual = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) vgmstream=chr(34)&directorio_actual&"test.exe"&chr(34)' ruta del vgmstream ffmpeg=chr(34)&directorio_actual&"ffmpeg.exe"&chr(34)' ruta del ffmpeg adxencd=chr(34)&directorio_actual&"adxencd.exe"&chr(34)' ruta del adxencd Set info_reader=objshell.exec(vgmstream&" -m "&archivo)' LECTURA DE DATOS DEL ARCHIVO
estado = info_reader.stdout.readline
if estado="" then msgbox "error al abrir el archivo,al parecer no es un stream valido",16,"VGMstream2ADXenc" wscript.quit end if
freq_real = info_reader.stdout.readline canales_index=info_reader.stdout.readline inicio = info_reader.stdout.readline final = info_reader.stdout.readline
'---------------rutina de frequencia real for contc=1 to 24 detect=Mid(freq_real,contc,3) if detect=" Hz" then hz_index=contc end if next
freq_index=hz_index-12 freq_real=Mid(freq_real,13,freq_index) '---------------fin de rutina con freq_real
'--------------rutina definidora de frequencias y canales de salida canales_index_d=mid(canales_index,11,255) if canales_index_d=>2 then canales="" if argumento_mono="1" then canales=" -ac 1"
if argumento_freq=1 then freq_ffmpeg=" -ar "&freq_conv else freq_ffmpeg=" -ar "&freq_real end if
detect=Mid(inicio,8,5) if detect="total" then call rutina_no_loop else exist_lps=1 end if
'---------------rutina de loop inical real for contc=12 to 60 detect=Mid(inicio,contc,8) if detect=" samples" then samplei_index=contc end if next sampleid_index=samplei_index-12 loop_inicio_real=Mid(inicio,13,sampleid_index) '---------------fin de rutina con loop_inicio_real
'---------------rutina de loop final real for contc=12 to 60 detect=Mid(final,contc,8) if detect=" samples" then samplef_index=contc end if next
samplefd_index=samplef_index-10 loop_final_real=Mid(final,10,samplefd_index) '----------------fin de rutina con loop_final_real
'msgbox "se han obtenido los siguientes valores reales"&chr(13)&"loop inicial:"&loop_inicio_real&chr(13)&"loop final:"&loop_final_real&chr(13)&"frequencia:"&freq_real&chr(13)&"canales:"&canales_index_d
'rutina calculadora v1.2 if argumento_freq=1 then call calculadora else loop_inicio=loop_inicio_real loop_final=loop_final_real end if
private sub calculadora() loop_iniciodec = ( ( FREQ_CONV * loop_inicio_real ) / freq_real ) loop_finaldec = ( ( FREQ_CONV * loop_final_real ) / freq_real ) rem Sub-rutina quita decimales rem -----rutina quita-decimales de loop_iniciodec for contc=1 to 20 detect=Mid(loop_iniciodec,contc,1) if detect="," then dec_corr_i=contc end if next if not dec_corr_i="" then dec_corr_i_index=dec_corr_i-1 loop_inicio=Mid(loop_iniciodec,1,dec_corr_i_index) + 1 else loop_inicio=loop_iniciodec end if '-----fin de rutina con loop_inicio rem -----rutina quita-decimales de loop_finaldec for contc=1 to 30 detect=Mid(loop_finaldec,contc,1) if detect="," then dec_corr_i=contc end if next if not dec_corr_i="" then dec_corr_i_index=dec_corr_i-1 loop_final=Mid(loop_finaldec,1,dec_corr_i_index) + 1 else loop_final=loop_finaldec end if '-----fin de rutina con loop_final 'wscript.echo "la calculadora ha calculado "&loop_iniciodec&" "&loop_finaldec 'msgbox "se ha calculado sin decimales"& Chr(13) &loop_inicio& Chr(13) &loop_final,vbinformation END SUB
' rutinas de convercion finales !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Objshell.run (vgmstream&" -o "&archivo_tmp&" -l 3 -f 0 "&archivo), 1, true 'wscript.sleep 16000 Objshell.run (ffmpeg&" -y -i "&archivo_tmp&freq_ffmpeg&canales&" "&archivo_conv), 1,true Objfso.deletefile archivo_tmp 'wscript.sleep 16000 Objshell.run (adxencd&" "&archivo_conv&adx_dir_out&" -lps"&loop_inicio&" -lpe"&loop_final), 1, true Objfso.deletefile archivo_conv
WScript.quit
private sub rutina_no_loop() '----------------rutina sin loop---------- Objshell.exec (vgmstream&" -o "&archivo_tmp&" -l 3 -f 0 "&archivo) Objshell.run (ffmpeg&" -y -i "&archivo_tmp&freq_ffmpeg&canales&" "&archivo_conv), true 'Objfso.deletefile archivo_tmp Objshell.run (adxencd&" "&archivo_conv&adx_dir_out), true 'Objfso.deletefile archivo_conv wscript.quit end sub
aqui los archivos vgmstream http://hcs64.com/files/vgmstream/vgmstream-r967-test.zip adxencd http://www.mediafire.com/?8jyit2n5uzj
|
|
|
En línea
|
|
|
|
kapo.damy
Desconectado
Mensajes: 6
|
bien he corregido varios errores y la considero la revision final 302 aca el enlace con los archivos http://www.megaupload.com/?d=WXFA2B1Jarreglos: indice de corrimiento de decimales existencia de el archivo final se cambio ffmpeg por sound exchanger (sox) que es mas flexible dialogos mejorados deteccion de frecuencia invalidas (solo numericas) SI NO VAN A COMENTAR LE PIDO AL MODERADOR QUE ME CIERRE EL TEMA. yyy el codeee ' VGMstream2ADXenc ver 2.4 rev 302 By por Kapodamy! ' Uso VGMstream2ADXenc.vbs -e [ARCHIVO] -f [FREQUENCIA DE CONVERSION] -s [CARPETA DE SALIDA] -mono
' Convierte los archivos de audio Stream, soportados por el VGMstream al formato ADX de manera automatizada. ideal para ADX con 32khz (menor peso) ' agradecimientos a novlucker, al foro el hacker y al equipo del proyecto SOund eXchange.
' Parametros: ' -e [ARCHIVO] archivo a convertir; debe ser soportado por el vgmstream y NO PUEDE ' TENER MAS DE 2 CANALES. en caso de que tuviera mas de 2 canales. la conversion ' sera reducida a 2 canales. si esta presente el parametro "-mono" la reduccion sera a un unico canal.
' -f [FRECUENCIA DE CONVERSION] especifica la frequencia de conversion de los ADX en hertz. ' si no se especifica la frequencia de salida sera igual a la de entrada.
' -s [CARPETA DE SALIDA] especifica la carpeta en donde se almacenaran los ADX, en lo posible SIN ESPACIOS. ' SE RECOMIENDA NO ESPECIFICAR SUBCARPETAS como por ejemplo "archivos_adx\wii_rips\ost". ' de lo contrario usar "COMILLAS". (ESTE PARAMETRO ES OPCIONAL)
' -mono especifica que la salida ADX mono (un canal) y no stereo (dos canales). ' NOTA:PUEDE CAUSAR ERRORES EN LOS LOOP's DE LOS ADX's. (ESTE PARAMETRO ES OPCIONAL)
'Ejemplos de uso ' VGMstream2ADXenc.vbs -e bgm_stage01.strm -f 32000 -s archivos_adx convertira el archivo bgm_stage01.strm a bgm_stage01.adx dentro de la carpeta my_adxs\ost\rips con una frequencia de 32000hz. ' VGMstream2ADXenc.vbs -e bgm_stage01.strm -s "my_adxs\ost\rips" convertira el archivo bgm_stage01.strm a bgm_stage01.adx dentro de la carpeta my_adxs\ost\rips. ' VGMstream2ADXenc.vbs -e bgm_stage01.strm -mono convertira el archivo bgm_stage01.strm a bgm_stage01.adx pero en mono. ' VGMstream2ADXenc.vbs -e bgm_stage01.strm convertira el archivo bgm_stage01.strm a bgm_stage01.adx sin modificar nada. '----------------------------------------------------------INICIO DEL SCRIPT--------------------------------------------------------------------------------------------------------------------------
dim detect dim loop_total dim exist_lps dim contc dim no_loop_index dim hz_index dim freq_index dim samplei_index dim samplef_index dim samplefd_index dim sampleid dim estado dim freq_real dim inicio dim final dim loop_inicio_dec dim loop_final_dec dim no_loop dim loop_inicio_real dim loop_inicio dim dec_corr_i_index dim dec_corr_f_index dim canales_index dim canales_index_d dim r dim i dim argumento_mono dim argumento_adx_dir dim argumento_archivo dim archivo_nombre_index dim loop_iniciodec dim loop_finaldec dim dec_corr_i dim dec_corr_f dim loop_final dim vgmstream dim ffmpeg dim sox dim adxencd dim argumentos_index dim loop_detect dim frequencia dim adx_quest Set objfso = createobject("scripting.filesystemobject") Set objshell = createobject("wscript.shell") '----------------rutina de seleccion de argumentos------------------ ' 0 1 2 3 4 5 6 ' Uso VGMstream2ADXenc.vbs -e [ARCHIVO] -f [FREQUENCIA DE CONVERSION] -s [CARPETA DE SALIDA] -mono
exist_lps=0 'se predefine como bandera sin loop_inicio y loop_final argumento_freq=0 'se predefine como bandera freq_real
If WScript.Arguments.count < 2 Then ' rutina de deteccion de parametros msgbox "Uso VGMstream2ADXenc.vbs -e [ARCHIVO] -f [FREQUENCIA DE CONVERSION] -s [CARPETA DE SALIDA] -mono"&chr(13)&"el parametro minimo es: -e [ARCHIVO]"&chr(13)&"los demas parametros son opcionales",32,"VGMstream2ADXenc - uso incorrecto" WScript.Quit else argumentos_index=WScript.Arguments.count-1 End If 'seleccion de parametros for i=0 to argumentos_index select case WScript.Arguments(i) case "-e" r=i+1 archivo=WScript.Arguments(r) if archivo="" then msgbox "error en -e. archivo no especificado",16,"VGMstream2ADXenc" wscript.quit end if
case "-f" r=i+1 argumento_freq=1 freq_conv=WScript.Arguments(r) if freq_conv="" then msgbox "error en -f. frequencia no especificada",16,"VGMstream2ADXenc" wscript.quit end if case "-s" r=i+1 argumento_adx_dir=1 adx_dir_out=" "&WScript.Arguments(r) if adx_dir_out="" then msgbox "error en -s. carpeta de salida no especificada",16,"VGMstream2ADXenc" wscript.quit objshell.run("cmd /c md "&chr(34)&WScript.Arguments(r)&chr(34)), 0, true end if
case "-mono" argumento_mono=1 end select next
if isnumeric(freq_conv)="False" then msgbox "error la frequencia especificada "&chr(34)&freq_conv&chr(34)&" no es un numero",16,"VGMstream2ADXenc"
rem rutina de deteccion de errores en parametros if archivo="" then msgbox "Error, archivo no especificado"&chr(13)&"parametro minimo: "&WScript.Scriptname&" -e [ARCHIVO]",16,"VGMstream2ADXenc" wscript.quit end if
if not argumento_adx_dir=1 then adx_dir_out=""
'-----------sub-rutina obtencion del nombre del archivo Set archivo_n = objfso.getfile(archivo)
archivo_nombre=archivo_n.name
for i=255 to 0 step -1 detect=mid(archivo_nombre,i,1) if detect="." then archivo_nombre_index=i-1 i=0 end if next archivo_nombre=mid(archivo_nombre,1,archivo_nombre_index) '----------fin de sub-rutina con archivo_nombre archivo_conv=archivo_nombre&".wav" archivo_tmp=archivo_nombre&"_tmp"&".wav"
' comprobacion de la existencia de un archivo adx con el mismo nombre que el resultado de la conversion if objfso.FileExists(archivo_nombre&".adx")="True" then adx_quest = inputbox("El Siguiente Archivo:"&chr(13)&archivo_nombre&".adx"&chr(13)&"Ya existe, ingrese un nuevo nombre o pulse OK"&chr(13)&"para sobrescribir.","VGMstream2ADXenc",archivo_nombre&".adx") if not adx_quest="" then archivo_nombre=adx_quest call re_sub_rutina_nombre end if
private sub re_sub_rutina_nombre() for i=255 to 0 step -1 detect=mid(archivo_nombre,i,1) if detect="." then archivo_nombre_index=i-1 i=0 end if next archivo_conv=mid(archivo_nombre,1,archivo_nombre_index)&".wav" end sub
'--------------fin de rutina de seleccion de argumentos con: archivo archivo_tmp archivo_conv ' freq_conv adx_dir_out argumento_mono 'msgbox archivo&" "&archivo_nombre&" "&archivo_conv&" "&archivo_tmp
directorio_actual = left(WScript.ScriptFullName,(Len(WScript.ScriptFullName))-(len(WScript.ScriptName))) vgmstream=chr(34)&directorio_actual&"test.exe"&chr(34)' ruta del vgmstream (la aplicacion se llama test.exe) adxencd=chr(34)&directorio_actual&"adxencd.exe"&chr(34)' ruta del adxencd sox=chr(34)&"sox.exe"&chr(34)' ruta del SOund eXchange Set info_reader=objshell.exec(vgmstream&" -m "&archivo)' LECTURA DE DATOS DEL ARCHIVO
estado = info_reader.stdout.readline
if estado="" then msgbox "error al abrir el archivo,al parecer no es un stream valido",16,"VGMstream2ADXenc" wscript.quit end if
freq_real = info_reader.stdout.readline canales_index=info_reader.stdout.readline inicio = info_reader.stdout.readline final = info_reader.stdout.readline
'---------------rutina de frequencia real for contc=1 to 24 detect=Mid(freq_real,contc,3) if detect=" Hz" then hz_index=contc end if next
freq_index=hz_index-12 freq_real=Mid(freq_real,13,freq_index) '---------------fin de rutina con freq_real
'--------------rutina definidora de frequencias y canales de salida canales_index_d=mid(canales_index,11,255) loop_detect=Mid(inicio,8,5)
if loop_detect="total" then exist_lps=0 else exist_lps=1 end if
select case argumento_freq case 0 frequencia=freq_real case 1 frequencia=freq_conv end select '------------fin de rutina con exist_lps y canales_index_d
'------------rutinas de obtencion de loop inicio real y loop final real if exist_lps=1 then '---------------rutina de loop inical real for contc=12 to 60 detect=Mid(inicio,contc,8) if detect=" samples" then samplei_index=contc end if next sampleid_index=samplei_index-12 loop_inicio_real=Mid(inicio,13,sampleid_index) '---------------fin de rutina con loop_inicio_real '---------------rutina de loop final real for contc=12 to 60 detect=Mid(final,contc,8) if detect=" samples" then samplef_index=contc end if next samplefd_index=samplef_index-11 loop_final_real=Mid(final,11,samplefd_index) '----------------fin de rutina con loop_final_real rem msgbox "se han obtenido los siguientes valores reales"&chr(13)&"loop inicial:"&loop_inicio_real&chr(13)&"loop final:"&loop_final_real&chr(13)&"frequencia:"&freq_real&chr(13)&"canales:"&canales_index_d END IF '-----------fin de rutina con loop_inicio_real y loop_final_real
'------------rutina calculadora v1.2 if argumento_freq=exist_lps then call calculadora else loop_inicio=loop_inicio_real loop_final=loop_final_real end if
private sub calculadora() loop_iniciodec = ( ( FREQ_CONV * loop_inicio_real ) / freq_real ) loop_finaldec = ( ( FREQ_CONV * loop_final_real ) / freq_real ) rem Sub-rutina quita decimales rem -----rutina quita-decimales de loop_iniciodec for contc=1 to 255 detect=Mid(loop_iniciodec,contc,1) if detect="," then dec_corr_i=contc end if next if not dec_corr_i="" then dec_corr_i_index=dec_corr_i-1 loop_inicio=Mid(loop_iniciodec,1,dec_corr_i_index) + 1 else loop_inicio=loop_iniciodec end if '-----fin de rutina con loop_inicio rem -----rutina quita-decimales de loop_finaldec for contc=1 to 255 detect=Mid(loop_finaldec,contc,1) if detect="," then dec_corr_f=contc end if next if not dec_corr_f="" then dec_corr_f_index=dec_corr_f-1 loop_final=Mid(loop_finaldec,1,dec_corr_f_index) + 1 else loop_final=loop_finaldec end if '-----fin de rutina con loop_final 'wscript.echo "la calculadora ha calculado "&loop_iniciodec&" "&loop_finaldec rem msgbox "se ha calculado sin decimales"& Chr(13) &loop_inicio& Chr(13) &loop_final,vbinformation END SUB
' RUTINAS DE CONVERSION FINALES !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Objshell.run (vgmstream&" -o "&archivo_tmp&" -l 3 -f 0 "&archivo), 1, true
if canales_index_d>2 then WScript.echo "ADVERTENCIA:el "&archivo&" posee "&canales_index_d&" canales, para evitar una conversion indeseada verifique el stream"
select case argumento_freq case 0 if argumento_mono=1 then Objshell.run (sox&" --show-progress -v3 -c"&canales_index_d&" "&archivo_tmp&" -c1 -r"&frequencia&" "&archivo_conv), 1, true end if objfso.GetFile(archivo_tmp).Name=archivo_conv case 1 if argumento_mono=1 then Objshell.run (sox&" --show-progress -v3 -c"&canales_index_d&" "&archivo_tmp&" -c1 -r"&frequencia&" "&archivo_conv), 1, true else Objshell.run (sox&" --show-progress -v3 -c"&canales_index_d&" "&archivo_tmp&" -c2 -r"&frequencia&" "&archivo_conv), 1, true end if end select
Objfso.deletefile archivo_tmp
select case exist_lps case 0 Objshell.run (adxencd&" "&archivo_conv&adx_dir_out), 1, true case 1 Objshell.run (adxencd&" "&archivo_conv&adx_dir_out&" -lps"&loop_inicio&" -lpe"&loop_final), 1, true end select Objfso.deletefile archivo_conv
WScript.quit
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Almacenar fecha y hora de creacion en una variable
Scripting
|
henry7512
|
3
|
2,974
|
18 Abril 2007, 02:33 am
por sirdarckcat
|
|
|
¿como almacenar el resultado de una query en una variable?
.NET (C#, VB.NET, ASP)
|
thecirujano
|
3
|
7,332
|
11 Octubre 2007, 06:35 am
por Hadess_inf
|
|
|
[batch]Almacenar el contenido de un archivo .txt en una variable.
« 1 2 »
Scripting
|
MK-Ultra
|
17
|
20,011
|
8 Julio 2008, 17:48 pm
por Coegho
|
|
|
Como almacenar una variable que contiene comillas dobles?
PHP
|
athlit
|
7
|
8,154
|
9 Junio 2009, 13:19 pm
por athlit
|
|
|
[VB-VBS]Duda para almacenar variable de un TextoBox
Scripting
|
Danni
|
2
|
4,748
|
19 Febrero 2010, 07:44 am
por Danni
|
|