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ú

Temas - <ИΘZIЭ(ŦB>

#1
Qué tal compañeros!

Me presento por aquí por un problema que se acaba de presentar. Alguien una vez me contradijo porque dije que Visual Basic tenía errores, pero sigo pensando que así es. Este caso en particular me lo confirma.

Resulta que tengo un UserControl con un Label dentro que funciona como un hipervínculo, solo que se muestra subrayado al pasar el mouse sobre él; de resto se muestra con fuente regular. En eso no tengo problema. El asunto está cuando el Label tiene espacios en blanco al inicio de su propiedad Text: se subraya todo, hasta los espacios en blanco, y es un problema porque cuando le dejo esos espacios es porque le asigno un icono (Image) al principio.
Ahora bien, ¿por qué digo que esto es un error de VB? Pues muy sencillo: porque cuando estaba diseñando mi UserControl en mi proyecto tipo ClassLibrary, y lanzaba el compilador para probar el funcionamiento de mi control no pasaba eso; es decir, los espacios en blanco iniciales no se subrayaban; vino a ocurrir después que di por terminado el diseño del control y lo usé en un formulario de un proyecto normal tipo WindowsForms.
Así pues, no tengo idea de qué pasa. ¿Sabrán ustedes? ¿Tendré que configurar algo que no sé? De verdad les agradezco una ayuda.
#2
Qué tal compañeros. Saludos.
Me paso por aquí de nuevo a ver si pueden ayudarme con una nueva duda.
Resulta que estoy creando mi librería de controles en un nuevo proyecto tipo Class Library. Ahora bien, después de ir creando controles he tenido que crear también métodos globales que los diferentes controles usan. No obstante, dichos métodos no son exclusivos para mis controles, sino funciones útiles que puedo usar en diferentes casos. En vista de eso, empecé a sentir la necesidad de estructurar mi librería en sublibrerías a fin de clasificarlas por categorías, tal cómo están las librerías de Microsoft. Así pues, ya no quiero que mis clases de controles y las de métodos formen parte de la misma librería base, sino de otras sublibrerías. Por ejemplo, quiero hacer una sublibrería Controls y otra Methods, y asignar todos mis controles a la clase Controls y los métodos a Methods. Así, al cargar controles de mi librería en un formulario X quedaría así: Friend WithEvents MyTextBox1 As MyLibrary.Controls.MyTextBox, en vez de: Friend WithEvents MyTextBox1 As MyLibrary.MyTextBox.
¿Se entiende la idea? ¿Cómo lo hago?
#3
Qué tal compañeros de foro! Hace tiempo que no pasaba por aqui. Saludos...

Les cuento que hace unos meses aprendi a crear mis propios controles personalizados (custom control), y si que ha sido provechoso. Es la mejor solucion cuando se quiere modificar o agregar propiedades a un control predefinido, o bien crear uno totalmente a la medida.
Pues bien, esto ultimo es justamente mi caso. Estoy creando un panel de botones, al que pueda ir cargandole items tal como se hace en un ListView, por ejemplo, solo que en este caso los items seran botones, que por cierto también son creados por mi.
En fin, para ello me cree una propiedad tipo lista (List (Of CrystalButton)), que se supone usaré para cargar los botones al panel. Pues bien, es justo ahi donde tengo el problema, pues no sé como asociar la inclusion de items a algun evento. ¿Para qué quiero eso? Pues porque es justo ahi donde debo incluir el codigo que me agregue el nuevo item al control e indique su posicion. De no hacer eso sólo puedo cargar ítems en la propiedad tipo lista, pero los botones no se agregan a mi control.
¿Me echan la mano?

Ah! Olvidé mencionar que uso el Visual Studio 2008, y estoy programando en Visual Basic.
#4
Cómo están compañeros del foro. Saludos.

Tengo esta duda desde hace un tiempo. He buscado por ahí pero no encuentro respuesta. Por eso vengo aquí.

Solo necesito saber cómo inserto un archivo cualquiera (imagen, fuente, icono, etc.) que tenga en los recursos de mi aplicación a X carpeta de mi computador.

Trabajo con Visual Basic .NET 2008. La versión del Visual Studio es 9.0.21022.8 RTM, y la del Framework es 3.5 SP1.
#5
Un saludo compañeros. Espero todos la estén pasando bien.

Yo aquí adentrándome por primera vez al mundo del vbs, que veo tiene muchas bondades adicionales aparte del batch, como por ejemplo, el sendkeys.

Precisamente en este caso debo confesarles que necesito saber algo básico: dónde encuentro una guía de teclas admitidas por ese comando y cómo hago las respectivas combinaciones.

En particular, me serviría de mucho que pudieran decirme cómo combino la tecla WINDOWS con otras teclas para ejecutar funciones básicas del sistema, como por ejemplo: Windows + D [mostrar escritorio], Windows + R [ejecutar], y así por el estilo.

Podrán ayudarme? Les agradezco de verdad.
#6
Hola compañeros del foro! Necesito una manita.
Parece algo sencillo, pero por más que busco no encuentro la respuesta. Por eso decidí apelar a vuestra sabiduría nuevamente!  ;D

Se trata de mostrar el nombre del grupo de trabajo de mi red local. El comando NET VIEW me lista los equipos de la misma, pero no el nombre.

¿Existe algún comando para mostrarla por ms-dos? De verdad me hace falta. Gracias.

#7
Qué tal amigos del foro? De nuevo reciban un cordial saludo.

Me aparezco nuevamente por aquí, pero esta vez para hacer un pequeño pero importante aporte, que me hubiese gustado mucho conseguir hace tiempo atrás.

Supongo que les ha pasado que han colocado letras acentuadas en un .bat y se topan con que al ejecutarlo, este les muestra otro caracter. Si son como yo que le doy importancia a la buena ortografía, imagino que no se conformarán con quitar el acento y dejar la palabra mal escrita.

En vista de eso, pasé mucho tiempo buscando la solución, y lo que pude encontrar por la red es que esto se debe a que el código ASCI de Windows no corresponde al de Batch. Sugerían usar un programa que mostraba las equivalencias entre ambos entornos, para de ese modo hallar los caracteres correctos. Con todo, el programa no me sirvió, así que seguí buscando y al fin hallé la manera.

He aquí los símbolos y caracteres que no se corresponden en Batch, y sus equivalencias:


Win=Batch

á=
é=,
í=¡
ó=¢
ú=£

Á=µ
É=
Í=Ö
Ó=à
Ú=é

ü=
Ü=š

ñ=¤
Ñ=¥

¡=­
¿=¨


Esos son los que me dieron problemas, pues en algunos diálogos los necesitaba.
Quiero que tengan en cuenta que aunque parece que me faltó colocar la equivalencia de á para batch no es así; en batch hay que usar ese espacio en blanco (que no es el mismo que se obtiene de la tecla TAB) para que muestre la á al ejecutar el código.
Otro detalle es el primer signo de admiración "¡"; en batch es una línea parecido a un guión, solo que no sé por qué aquí no se vé. Pero copien todo eso y guárdenlo en un .txt y verán que sale.
Yo particularmente los tengo en un .txt, y cada vez que los necesito los busco allí, los copio y los pego en el code.
Por último, si alguna vez tienen problemas con estos caracteres, pueden ejecutar esta línea en cmd:

echo áéíóúÁÉÍÓÚüÜñÑ¡¿ >c:\Caracteres.txt

Y así guardarán los caracteres equivalentes de batch en un archivo de texto.

Bueno, esto era todo. Espero de verdad que a muchos les sirva. Yo quise conseguir esta ayuda antes pero ni con google pude hallarla. Así que ahora que la tengo la comparto, siguiendo el buen ejemplo de todos los miembros del foro.
#8
Que tal compañeros del foro?

Acabo de toparme con un error del EDLIN que me deja de manos atadas. Hace poco uno de los amigos del foro me ayudó a editar un archivo de texto, especificamente para cambiar una línea por otra. Esto fue lo que me enseñó:


@echo off
set /p file=Indique el archivo a procesar:
set /p text=Indique el texto nuevo:
set /p line=Indique el numero de linea:
(
echo %line%
echo %text%
echo w
echo e
) | edlin /b %file%


Esto funciona bien, pero deja de funcionar cuando el nombre del archivo contiene comillas. Generalmente esto ocurre cuando el nombre del archivo contiene espacios en blanco.

Por eso mi pregunta es, cómo se hace en este caso para que las comillas no representen un problema? Les agradezco su ayuda.
#9
Cómo están amigos del foro? De nuevo necesito su valiosa ayuda.

Resulta que estoy usando un FOR para traerme una por una las línes de un archivo de texto. Fíjense:

Tengo este archivo de texto: Archivo.txt, cuyo contenido es el siguiente:

Linea 1
Linea 2
Linea 3


Las líneas me las traigo como ya saben:


@echo off
set crrFile=c:\Archivo.txt
for /f "tokens=*" %%L in ("%crrFile%") do (
    echo Procesando linea: %%L
)
echo.
echo Terminado
pause>nul


Esto funciona perfecto. Me lista las líneas justo como quiero:


Linea 1
Linea 2
Linea 3

Terminado.


Ahora bien, el problema se me presenta cuando uso este mismo código en una función llamada desde otro ciclo FOR. Vean cómo:

Esta vez tengo tres archivos de texto: Archivo1.txt, Archivo2.txt y Archivo3.txt, los cuales tienen el mismo contenido:


Linea 1
Linea 2
Linea 3


Pues bien, para listar las líneas de cada uno hago lo siguiente:


@echo off
:Funcion1
for /f "tokens=*" %%F in ('dir /a /b *.txt') do (
    set "crrFile=%%F"
    echo Procesando archivo: %%F
    call:Funcion2
    echo.
)
echo.
echo Terminado
pause>nul

:Funcion2
for /f "tokens=*" %%L in ("%crrFile%") do (
    echo Procesando linea: %%L
)
goto:eof


Como ven, el código para listar el txt es igual al del primer caso; la única diferencia es que aquí tomo el nombre del archivo del ciclo FOR ejecutado en :Funcion1. Lo que no entiendo es por qué el ciclo de :Funcion2 no lista las líneas del archivo, aunque la variable %crrFile% si almacena bien el nombre de cada archivo de texto. En vez de eso, el segundo ciclo me vuelve a mostrar el nombre del archivo contenido en %crrFile%. Fíjense:


Procesando archivo: C:\Archivo1.txt
Procesando linea: C:\Archivo1.txt

Procesando archivo: C:\Archivo2.txt
Procesando linea: C:\Archivo2.txt

Procesando archivo: C:\Archivo3.txt
Procesando linea: C:\Archivo3.txt

Terminado.


Ven? No entiendo por qué hace esto! No muestra las líneas del archivo sino el nombre del archivo.
Por favor, alguien sabe por qué pasa eso? Yo de verdad no entiendo. Le agradezco puedan ayudarme.
#10
Cómo están amigos del foro?

Acudo a uds nuevamente por un problema que ya me está desagradando. Es segunda vez que me pasa, y de veras me causa muchos problemas.

Ya publiqué otro tema donde mencioné que cuando uso el ciclo FOR para tomar una línea de un archivo de texo resulta que la variable del ciclo (%%x) no me lo trae exacta ante algunos detalles; el primero: cuando el primer caracter es un espacio en blanco, y ahora en segundo lugar: cuando la línea tiene un signo de exclamación (!). En ambos casos me quita ese caracter, por cuanto si la línea dice:

" Hola mundo!" (sin las comillas)

la variable %%x se trae:

"Hola mundo" (sin las comillas).

Esto de verdad es un problema, porque lo que contengo en esas líneas son nombres de archivos que posteriormente necesito renombrar, pero ante tal cambio el sistema no puede encontrar los archivos. Ejemplo:

MiLista.log

Archivo1.txt
!Archivo.txt
archivo.txt


Esa es mi lista. El código del batch es:


setlocal enabledelayedexpansion

set lin=0
for /f "tokens=*" %%a in (MiLista.log) do (
       set /a lin+=1
       call set lsn!lin!=" %%a"
       echo %%a
)

for /l %%n in (1,1,!lin!) do (
       echo Linea %%n: "!lsn%%n!"
)


Bien, esto genera el siguiente resultado:


Linea 1: "Archivo1.txt"       (Bien!)
Linea 2: "Archivo.txt"         (Mal! Falta el !)
Linea 3: "archivo.txt"         (Mal! Falta el espacio del inicio)


Así pues, podrán entender mi frustración. De verdad que esto inhabilita todo el resto de mi batch, así que me urge la ayuda de quien sepa cómo solucionarlo.

Debo acotar que sé que la función inicial (setlocal enabledelayedexpansion) suprime el signo de exclamación de algunas líneas, y que para poder verlo hay que usar el símbolo ^ al lado del mismo. Lo que no sé es cómo hacer eso aquí en en vista de que no sé cuál línea contendrá ese caracter.

De verdad agradezco la ayuda que puedan darme al respecto.
#11
Qué tal amigos del foro! Otra vez yo por aquí.

Acabo de toparme con un detallito que me complica la vida. Resulta que tengo un .txt que contiene enlistados los nombres de varios archivos en una carpeta. Luego recupero esos nombres y los guardo en una variable tipo matriz (o como se le llame), para lo cual uso el comando CALL SET dentro de un ciclo FOR, como me enseñaron aquí.

En fin, el problema es que hay archivos que tienen un espacio al inicio del nombre, pero la variable del FOR (%%a) se lo quita, lo que me deja ineficiente el script.

Déjenme mostrárselo:

Supongamos que esta es mi lista (Lista.txt):

Archivo1.txt
Archivo2.txt
Archivo3.txt
Archivo4.txt


Como ven, la línea 3 tiene almacenado el nombre de un archivo, pero ese espacio al inicio no es un error al crear la lista, sino que el archivo se llama así: " Archivo3.txt".
Ok. Entonces, para crear mi variable con los valores de cada línea hago esto:


set lin=0
for /f "tokens=*" %%a in (Lista.txt) do (
      set /a lin+=1
      call set list!lin!="%%a"
)


En este punto la variable list ya contiene el nombre de cada línea por separado, pero con el detalle de que la línea tres no se guardó así: " Archivo3.txt", como debería, sino así: "Archivo3.txt", lo cual inevitablemente me produce un error posteriormente.

Pues bien, tras haber analizado de dónde surge el error, noté que es en la variable del FOR (%%a); esta no se trae el valor con el espacio en blanco inicial, sino que lo quita. Por eso luego se guarda en la variable list de ese modo.

Así pues, ¿qué medida puedo tomar para recuperar el texto de la línea 3 tal cual como está en List.txt, con su respectivo espacio en blanco inicial? De verdad agradezco previamente su valiosa ayuda.
#12
Saludos compañeros del foro.

Tengo un pequeño problemita. Estoy intentando comparar una ruta introducida a mano en un archivo por lotes con una ruta que obtengo del sistema, y resulta que la que el sistema me da viene en mayúsculas, de modo que en la sentencia If en que las comparo no coinsiden, y no se ejecuta el código, por supuesto.

Así pues, me gustaría saber cómo hacer para tomar la ruta que el usuario indico (que está almacenada en una variable) y convertirla a mayúsculas antes de compararlas. ¿Se puede? Agradezco su ayuda.
#13
Hola a todos otra vez.

Amigos, tengo este problema: necesito saber si una de mis variables tiene un símbolo como valor almacenado, pero no sé cómo inquirirlo. Cuando se trata de una letra, texto normal o números, basta con escribir

If %variable% == 123

o también

If %variable% == texto

etc. Pero cuando intento hacer lo mismo con un símbolo (ya me ha pasado con el slash [/] y la comilla ["]) no funciona, supongo que porque son caracteres especiales dentro del BATCH.

Así pues, mi pregunta es: ¿cómo se deben escribir esas sentencias dentro del IF?
Por favor, agradezco su ayuda.
#14
Buenas noches compañeros. Bueno, no sé que horario tengan uds, pero aquí es de noche. Saludos.

Quisiera saber si los archivos y directorios tienen agún identificador que los diferencie entre sí, de modo que se pueda verificar a través de un .bat.

Tengo un .bat que pide al usuario definir la ruta de un directorio o archivo, para luego almacenar ese valor en una variable. Lo que necesito ahora es poder saber si la ruta se trata de un archivo o un directorio, pero no sé cómo. Se me ocurrió verificar si la ruta tenía extensión, ya que así sabría que se trata de un archivo, pues los directorios no tienen extensión. No obstante, recordé que hay muchos archivos que tampoco tienen extensión, así que no lo intenté.

Así pues, consideré necesario acudir una vez más a uds a ver si me ayudan. Se los agradezco de antemano.
#15
Hola a todos compañeros del foro. Saludos.

Recientemente me he visto en la necesidad de saber cuántos caracteres tiene el valor contenido en una variable. Por ejemplo, si mi variable %variable% tiene como valor HOLA, ¿qué función existe para contar esos cuatro caracteres?

De verdad necesito esa respuesta. Gracias.
#16
Saludos amigos foristas!

He estado indagando en la web cómo leer un archivo .txt línea por línea, y he logrado hacerlo. Con el comando Echo se pueden mostrar cada una individualmente.

Ahora, por más que he intentado no he logrado almacenar el texto de una línea específica en una variable. El código que encontré es este:


setlocal enabledelayedexpansion

:reader
set c=0
for /f "tokens=*" %%a in (archivo.txt) do (
           set /a c+=1
           call set lin!c!=Linea_!c! = %%a
)
echo Archivo Leido

for /l %%n in (1,1,!c!) do (echo !lin%%n!)
pause
endlocal


Como ven, puedo ver cada una de las líneas perfectamente, pero no sé cómo almacenar el valor de alguna de ellas en otra variable. Sé que la sentencia call set lin!c!=Linea_!c! = %%a crea una variable que almacena el texto de cada línea por separado, pero no sé cómo tomar esos valores. Nunca he trabajado con variables tipo matriz, así que quisiera pedir su ayuda para poder hacerlo.

Intenté de esta manera, tanteando a ver:

set variable=lin!2!

Trataba de tomar el texto de la línea 2 que la variable tiene almacenada, pero no funcionó. También intenté de este modo, según leí por ahí:

set variable=%%lin%2%%%

pero tampoco funcionó. Así pues, de verdad necesito que me echen una mano, porque como ven, estoy bien perdido! :D Debe ser algo simple, pero me servirá de mucho.
#17
Hola de nuevo compañeros del foro. He regresado otra vez a pedir su ayuda.

Esta vez necesito saber cómo extraer una fracción del valor que tiene almacenado una variable. Por ejemplo, si mi variable %var% tiene como valor ABCD, ¿cómo tomo el AB nada más, o el CD? ¿Sí hay manera de hacerlo?

Ojalá puedan volver a darme su ayuda.
#18
Qué tal compañeros?

Esta vez tengo este problema: necesito tomar los atributos de un archivo para mostrarlos en un mensaje pero no sé cómo hacerlo. Sé que el comando attrib seguido del nombre del archivo me muestra sus atributos, pero necesito tomar ese valor. ¿Sabrá alguno cómo hacerlo? Les estaré muy agradecido.
#19
Qué tal estimados foristas? Reciban de nuevo mi saludo.

Resulta que llevo varias horas dándome golpes con otro asunto, pero nada que le hallo solución, aunque supongo que es fácil.

Esta vez se trata de comparar el valor de una variable (el valor es una letra) con una letra específica. Debería ser sencillo, pero resulta que no funciona igual que con números. Bueno, al menos a mí no me funciona.

El problema se me presenta así:

set var=A

If %var%==A goto X...

Así de simple es. Ya he verificado el valor de %var% y está bien, pero el problema es que no se ejecuta el comando que le asigno al cumplirse la condición (goto X). Así pues, supongo que lo que está mal es la manera en que evalúo el valor de %var% (%var%==A).

¿Me podrían ayudar en eso? ¿Qué estoy haciendo mal?

Nota del MOD:
Los códigos con sus respectivas etiquetas.
#20
Hola a todos otra vez! De nuevo me veo en la necesidad de que acudir a uds para aprender más.

Resulta que estoy editando el valor de una clave de registro a través de un .bat, lo cual he hecho muchas veces, pero en esta ocasión necesito asignarle el valor de una variable a dicha clave. Les daré un ejemplo del código del .bat:


set variable1=He aquí el valor que quiero asignar a la clave


reg add HKLM\SYSTEM\ControlSet001\Control /v Clave1 /t reg_expand_sz /d %Variable1% /f


Bien, con esto debería asignar el valor de Variable1 (He aquí el valor que quiero asignar a la clave) a la clave Clave1, pero en vez de eso me sale un mensaje de error.
Acabo de probar, y noté que el error se presenta porque el valor de Variable1 tiene espacios en blanco. Así pues, necesito saber qué debo hacer para asignar dicho valor con espacios a la clave. Les agradeceré mucho su ayuda!


Quiero aclarar que no se trata de colocar EL NOMBRE de la variable como valor de la clave, sino su valor. O sea,

Variable1 = He aquí el valor

Clave1 = He aquí el valor


No quiero esto:

Variable1 = He aquí el valor

Clave1 = %Variable1%


Con esta linea:

reg add HKLM\SYSTEM\ControlSet001\Control /v Clave1 /t reg_expand_sz /d %%Variable1%% /f

solo lograré que el valor de Clave1 sea = %Variable1% y no es lo que busco.
#21
Buenas compañeros. Un saludo primeramente.

Les cuento que he notado y leído que al trabajar con cadenas o claves de registro que tienen espacios en blanco se presentan problemas. Lo que no he logrado encontrar es cómo debo escribir la clave que lleva los espacios para que sea reconocida en un .bat

Por ejemplo, estoy tratando de modificar un valor contenido en la clave HKLM\SYSTEM\ControlSet001\Control\Session Manager\Environment, pero como ven, parte de la cadena (Session Manager) lleva un espacio en blanco, y por eso me sale un error.
Leí en un tutorial que se puede usar el caracter ~ para abreviar la cadena, pero no he hallado la forma correcta de usarlo. El tutorial coloca este ejemplo:

DA ERROR:
reg delete hklm\software\microsoft\windows\currentversion\run\QuickTime Task

ABREVIADO Y SIN ERROR:
reg delete hklm\software\microsoft\windows\currentversion\run\QuickT~1

Así pues, lo que necesito es que alguno de uds pueda ayudarme con este detalle al que por más que busco no le he hallado respuesta. Gracias de antemano.
#22
Cómo están amigos foristas? De nuevo recurro a sus conocimientos por ayuda.

Esta vez se trata de saber si existe la posibilidad de ejecutar un comando al ser extraida una unidad usb del sistema. La intención es restablecer algunos archivos que tengo en mi pendrive en caso de que algún virus lo haya quitado, cosa que pasa siempre que lo conecto a una PC infectada. Específicamente, mi archivo es un Autorun.inf que uso para personalizar la vista de mi pendrive (íconos, label, etc.) , y como saben, los virus reemplazan ese archivo por su propio Auntorun.

Así pues, necesito saber si puedo crear un .bat que se ejecute justo al extraer el pendrive de la PC para hacer la restauración, para lo cual sólo me hace falta saber cómo detectar la extracción, que supongo que genera algún evento en Windows. Sabe alguien cómo detectar eso? Gracis de antemano a los que puedan ayudarme.
#23
Un saludo a todos los miembros del foro. Les cuento primeramente que soy muy nuevo usando archivos por lotes, pero una vez empecé no he querido parar. De verdad es mucho lo que facilita tener conocimientos al respecto. Uds mejor qu nadie lo deben saber, pues he notado con asombro expertos que son. Hace ya un par de horas que estoy revisando este foro en busca de una respuesta a mi duda, mas por no encontrar una alusión directa, me veo en la necesidad de pedirle ayuda a uds los expertos.

Como lo planteé en el título, lo que necesito es saber cómo detecto en mi .bat que se ejecuta desde un pendrive la unidad (o letra) que se le ha asignado en Windows. O sea, sí cuando conecto el pendrive windows le asigna la F:, cómo hago para obtener esa información en el mismo .bat?

Esa información la necesito para abrir el pendrive con el explorador. Tal vez haya una manera más simple de hacerlo.

Gracias de antemano...