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 - EdePC

#1331
Windows / Re: Administrador en Win10v.1809
29 Julio 2019, 17:05 PM
Saludos,

- Quieres eliminar la cuenta de Administrador?
- Quieres bajar al mínimo la seguridad de UAC para que nunca pida permisos de Administrador al ejecutar un programa?
- Quieres deshabilitar UAC por completo y dejar la PC como un Windows XP (todo se ejecuta con permisos de Administrador) y el PC se acelera un 15% XD.
#1332
Saludos,

- Dependiendo de la calidad del cable estos pueden tener parte de estaño, aluminio, oro, cobre, plata (ordenados de menor a mayor capacidad de condición de corriente).

- Siempre se busca un equilibrio entre flexibilidad/maleabilidad, conducción, peso, durabilidad, etc. usando combinaciones entre estos. Por ejemplo el aluminio es muy duradero, no se degrada con el tiempo tal fácilmente (mejor es el oro), pero es quebradizo, la plata es mejor conductor que el cobre, pero este es más degradable con el tiempo, aparte de ser más escaso y caro. Lo normal es encontrar cables de cobre con una fina capa de aluminio o cobre con estaño o cromo, por esto el color plateado. No he encontrado mucha info sobre el tema.

- En todo caso no deberías de tener problemas para soldar/unir tus cables con estaño y cautín.
#1333
Saludos,

- Al parecer no usan mucho el mouse, por lo general uso la Laptop y este trae su TouchPad o Panel Táctil, no uso mouse a no que que sea para Jugar.

-- He visto que por el uso se suele gastar o marcar este panel táctil, por lo que que le pegué encima un "vinilo adhesivo transparente" jeje de esos que compran, cortan y venden en las calles como protector de pantalla para el móvil.



- Si uso la Laptop, tengo a mano un Clipboard Folder o Carpeta de Archivos que uso como PAD o "Alfombrilla" para el mouse, esto solo para jugar:



- Para PC de escritorio siempre lo vi más cómodo y efectivo este que vale sus 3 dólares. Es de jebe de 3 mm revestido con una tela muy fina y liza con una base antideslizante y tiene una almohadilla de gel para descansar la muñeca:



- No me convencen las superficies muy lizas porque un mouse óptico común tiene problemas con el reflejo que hacen, luego las superficies blandas tienen a frenar el deslizamiento del mouse, las superficies más sólidas pueden tener asperezas que actual como abrasivo y deterioran rápidamente los contactos deslizantes del mouse,
#1334
Saludos,

- Le he estado dando vueltas a este tema y me he topado con tres alternativas que básicamente derivan del modo en que se muestra la barra, pero la base viene a ser el iniciar una aplicación en segundo plano e ir comprobando si ya terminó su trabajo, y si no, ir haciendo otra cosa mientras tanto, como lo es el mostrar/actualizar una barra de progreso.

- Lo más sencillo me parece que es usar SET /P "=." <nul para mostrar puntos mientras que espera, otro detalle está en el tiempo de espera para mostrar los puntos, lo que recomiendo por experiencia es usar PING -n 2 para esperar un segundo solo si se espera que la aplicación va a demorar más de 30 segundos. Quitar el PING si se espera que la aplicación va a demorar 30 segundos o menos, ya que al no esperar un tiempo prudente se consumen más recursos en CPU del PC.

- El siguiente batch abre el block de notas (notepad.exe) y comprueba que el proceso notepad.exe siga en ejecución, si es así, escribe un punto cada segundo, si notepad.exe se cierra el batch termina:

Citar@ECHO OFF
ECHO Iniciando notepad.exe
START /MIN notepad

SET "proceso=notepad.exe"
SET /p "=Esperando a que notepad.exe se cierre " <nul
:inicio
 REM Cada 1 segundo comprueba si el proceso aún está trabajando
 PING /n 2 127.0.0.1 >nul
 TASKLIST /FI "IMAGENAME eq %proceso%" | FIND "%proceso%" >nul
 IF %ERRORLEVEL% EQU 0 (
   REM Barra de progreso ...
   SET /p "=." <nul
   GOTO inicio
 )
:fin
ECHO:

ECHO Ud. ha cerrado notepad.exe
PAUSE

- Otro método que he estado viendo permite una mejor apariencia ya que es más HardCode, pero tiene la desventaja de que tiene que usar CLS para limpiar la pantalla, por lo que se perdería salida por pantalla anterior:



-- Este lo he adaptado justamente para hacer un BackUp de una base de datos MySQL que uso para hacer pruebas, en mi caso funciona así:

Citar@ECHO OFF

SET "mysqldump=mysqldump.exe"
SET "database=dbcontrolasistenciav6"
SET "user=root"
SET "pass=123"
SET "backup=%database%_%date:~-4%%date:~-7,2%%date:~-10,2%.sql"

START /MIN CMD /C "%mysqldump% %database% --user=%user% --password=%pass% > %backup%"

SET "load="
SET "loadnum=0"
SET "myapp=mysqldump.exe"

:cargando
SET "load=%load%┃"
CLS
ECHO:
ECHO     Realizando BackUp
ECHO ┏━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO  %load%
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━┛
SET /A "loadnum+=1"
IF %loadnum% EQU 24 SET /A "loadnum=0" & SET "load="
TASKLIST /FI "IMAGENAME eq %myapp%" | FIND "%myapp%" > NUL
rem TASKLIST | FIND "%myapp%" > NUL
IF ERRORLEVEL 1 GOTO completado
GOTO cargando

:completado
CLS
ECHO:
ECHO     BACKUP COMPLETADO
ECHO ┏━━━━━━━━━━━━━━━━━━━━━━━━┓
ECHO  ┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃┃
ECHO ┗━━━━━━━━━━━━━━━━━━━━━━━━┛
ECHO:
DIR | FIND "%database%"
PAUSE

- Por último he visto que se puede utilizar la técnica del BackSpace para borrar caracteres y no tener que estar usando CLS, pero eso ya es otra historia.

- Fuentes:
https://stackoverflow.com/questions/21108380/coding-a-real-time-progress-bar-in-batch
https://ss64.org/viewtopic.php?id=1499
https://superuser.com/questions/82929/how-to-overwrite-the-same-line-in-command-output-from-batch-file

----------
Edito, GeSHi no interpreta bien los caracteres que uso para mostrar la pretty progress bar
#1335
- Por defecto los PRIMARY KEY son siempre NOT NULL y UNIQUE, no tendría sentido ni posibilidad el tener una Clave Primaria con valores repetidos o nulos XD, me parece que WHK no interpretó bien la estructura de la tabla (ver tabla abajo).

- Aunque al final lo que se quiere lograr es rescatar los valores de los campos de un registro, eliminar dicho registro y volverlo a insertar para que tenga un id generado nuevo. Esto lo puedes hacer tal cual entendiendo esto o atacarlo de otras maneras, por ejemplo usar variables para rescatar los valores, eliminar el registro, cambiar los valores de las variables ser necesario, e insertar el nuevo registro preparado.

-- Por ejemplo:

mysql> DESCRIBE animals;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM animals;
+----+------+
| id | name |
+----+------+
|  1 | cat  |
|  2 | dog  |
|  3 | rat  |
|  4 | bull |
|  5 | lion |
+----+------+
5 rows in set (0.00 sec)

mysql> SELECT @id := id, @name := name FROM animals WHERE id = 3;
+-----------+---------------+
| @id := id | @name := name |
+-----------+---------------+
|         3 | rat           |
+-----------+---------------+
1 row in set (0.01 sec)

mysql> SELECT @id;
+------+
| @id  |
+------+
|    3 |
+------+
1 row in set (0.00 sec)

mysql> SELECT @name;
+-------+
| @name |
+-------+
| rat   |
+-------+
1 row in set (0.00 sec)

mysql> SET @name = 'tiger';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @name;
+-------+
| @name |
+-------+
| tiger |
+-------+
1 row in set (0.00 sec)

mysql> DELETE FROM animals WHERE id = @id;
Query OK, 1 row affected (0.05 sec)

mysql> INSERT INTO animals ( name ) VALUES ( @name );
Query OK, 1 row affected (1.23 sec)

mysql> SELECT * FROM animals;
+----+-------+
| id | name  |
+----+-------+
|  1 | cat   |
|  2 | dog   |
|  4 | bull  |
|  5 | lion  |
|  6 | tiger |
+----+------+
5 rows in set (0.00 sec)


#1336
Saludos,

- He estado haciendo pruebas en mi MySQL 5.6.35 y veo que cuando se actualiza un valor auto_increment usando UPDATE el contador interno que usa MySQL no se actualiza y se queda como estaba, luego de intentar INSERT un nuevo registro da un error ya que el contador se quedo atrás, sin embargo el contador se actualiza luego del error y permite insertar el nuevo registro en el siguiente intento:


mysql> DESCRIBE animals;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> SELECT * FROM animals;
+----+------+
| id | name |
+----+------+
|  1 | dog  |
|  3 | lax  |
|  4 | wolf |
|  7 | cow  |
|  8 | bull |
|  9 | lion |
| 10 | cat  |
+----+------+

mysql> SET @newId = ( SELECT MAX(id) + 1 FROM animals );
Query OK, 0 rows affected (0.00 sec)

mysql> UPDATE animals SET id = @newId, name = 'rat' WHERE name = 'lax';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM animals;
+----+------+
| id | name |
+----+------+
|  1 | dog  |
|  4 | wolf |
|  7 | cow  |
|  8 | bull |
|  9 | lion |
| 10 | cat  |
| 11 | rat  |
+----+------+
7 rows in set (0.00 sec)

mysql> INSERT INTO animals VALUES ( NULL, 'parrot' );
ERROR 1062 (23000): Duplicate entry '11' for key 'PRIMARY'

mysql> INSERT INTO animals VALUES ( NULL, 'parrot' );
Query OK, 1 row affected (0.15 sec)

mysql> SELECT * FROM animals;
+----+--------+
| id | name   |
+----+--------+
|  1 | dog    |
|  4 | wolf   |
|  7 | cow    |
|  8 | bull   |
|  9 | lion   |
| 10 | cat    |
| 11 | rat    |
| 12 | parrot |
+----+--------+
8 rows in set (0.00 sec)


- Pues habrá que tener esto en cuenta y actualizar el contador a mano como dice WHK usando:

ALTER TABLE animals AUTO_INCREMENT = @newId + 1;

-- PERO no funciona, esa instrucción no soporta variables XD, al menos no en mi MySQL 5.6.35, la alternativa es usar una Sentencia Preparada, los pasos completos a continuación:


mysql> SELECT * FROM animals;
+----+--------+
| id | name   |
+----+--------+
|  4 | wolf   |
|  7 | cow    |
|  8 | bull   |
|  9 | lion   |
| 10 | cat    |
| 11 | rat    |
| 12 | parrot |
| 13 | condor |
| 14 | tiger  |
| 15 | fly    |
+----+--------+
10 rows in set (0.00 sec)

mysql> SET @newId = ( SELECT MAX(id) + 1 FROM animals );
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @newId;
+--------+
| @newId |
+--------+
|     16 |
+--------+
1 row in set (0.00 sec)

mysql> UPDATE animals SET id = @newId, name = 'gorilla' WHERE name = 'rat';
Query OK, 1 row affected (0.14 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> SELECT * FROM animals;
+----+---------+
| id | name    |
+----+---------+
|  4 | wolf    |
|  7 | cow     |
|  8 | bull    |
|  9 | lion    |
| 10 | cat     |
| 12 | parrot  |
| 13 | condor  |
| 14 | tiger   |
| 15 | fly     |
| 16 | gorilla |
+----+---------+
10 rows in set (0.00 sec)

mysql> ALTER TABLE animals AUTO_INCREMENT = @newId + 1;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '@newId + 1' at line 1

mysql> SET @sql = CONCAT('ALTER TABLE animals AUTO_INCREMENT = ', @newId + 1);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @sql;
+-----------------------------------------+
| @sql                                    |
+-----------------------------------------+
| ALTER TABLE animals AUTO_INCREMENT = 17 |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql> PREPARE st FROM @sql; EXECUTE st;
Query OK, 0 rows affected (0.00 sec)
Statement prepared

Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> INSERT INTO animals VALUES ( NULL, 'mouse' );
Query OK, 1 row affected (0.13 sec)

mysql> SELECT * FROM animals;
+----+---------+
| id | name    |
+----+---------+
|  4 | wolf    |
|  7 | cow     |
|  8 | bull    |
|  9 | lion    |
| 10 | cat     |
| 12 | parrot  |
| 13 | condor  |
| 14 | tiger   |
| 15 | fly     |
| 16 | gorilla |
| 17 | mouse   |
+----+---------+
11 rows in set (0.00 sec)
#1337
Saludos,

- Windows 10 trabaja constantemente con wuaserv (Windows Update) para actualizar el Sistema Operativo, drivers, Antivirus, telemetría, etc, este trabaja con BITS (Servicio de transferencia inteligente en segundo plano) para controlar el ancho de banda que usa el usuario y el ancho de banda que usa Windows Updata dándole más importancia al ancho de banda del usuario. DoSvc (Optimización de Entrega) se encarga ver catalogar las actualizaciones que se van a recibir.

- Windows 10 es así, si eres de los usuarios que quieren estar al día con su sistema en todo momento lo puedes dejar como está. Si eres un usuario que prefiere actualizar a mano cuando tenga tiempo, debes ir a Configuración de Windows > Redes e Internet > Estado > cambiar propiedades de conexión > y activar la conexión de uso medido. De esta manera Windows solo busca no busca ni descarga nada, uno debe de ir a Configuración de windows > Actualización y Seguridad > Buscar actualizaciones y aceptar descargarlas.

- Los métodos de Detener servicios o deshabilitarlos no son permanentes, ya que Windows los comprueba y activa cada cierto tiempo.
#1338
Saludos,

- Me parece que mi Office 2016 ni mi Office 2010 tienen ese proceso, usa tu Administrador de Tareas para ver el nombre del ejecutable y su ubicación, luego cámbiale el nombre agregándole la extensión .bak o algo así. Luego revisa si tu Office funciona bien.

- El office 2019 es muy pesado XD.
#1339
Saludos,

- En caso de ChkDsk, este tiene un parámetro para forzar el desmonte de la unidad (/X):

Código (dos) [Seleccionar]
ChkDsk %unidad%: /F /X

- Así ya no pide intervención del usuario.

- Si lo que deseas es pasar de todas maneras es Y al ChkDsk puedes probar con lo siguiente:

Código (dos) [Seleccionar]
ECHO Y | ChkDsk %unidad%: /F /X

- Fuentes:

https://forums.techguy.org/threads/solved-run-chkdsk-exe-via-command-line-without-getting-yes-or-no-prompt.408856/

https://jpsoft.com/forums/threads/sending-y-to-chkdsk-to-run-on-c-at-next-reboot.5302/
#1340
Scripting / Re: Extraer Letras con un batch
23 Julio 2019, 21:45 PM
Saludos,

- Revisa el siguiente Script:

Código (dos) [Seleccionar]
@ECHO OFF

FOR %%a IN (PP280868????????149???.txt) DO (
  CALL :renombra %%a
)

PAUSE
GOTO :EOF

:renombra
SET "tmp=%1"
SET "n1=%tmp:~0,8%"
SET "n2=%tmp:~10%"
ECHO Renombrando %tmp% a %n1%%n2%
REN %tmp% %n1%%n2%