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

#11
asi tampoco..... le di vuelta el orden de las letras pensando que si buscaba al reves tengo mas chances ya que el pendrive siempre se ubica ultimo en la lista de unidades

for %%i in (Z Y X W V U T S R Q P O N M L K J I H G F E D C) do (if exist "%%i:\INS\NINFUS" set "DRIVE=%%i:")
#12
si abris la compactera  lo podes probar facilmente, ahora mismo estoy haciendo eso pero no hay caso con los >null no sale...
#13
chan! falla
sino algun otro metodo para detectar cual es la letra de mi unidad de pendrive, o sea que solo liste las unidades activas y luego las compare para ver si coinciden y de esa manera determine la unidad correcta evitando errores
como seria un codigo asi?
#15
probe con
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%i:\INS\NINFUS" set "DRIVE=%%i:")>NUL 2>&1

pero con la compactera abierta dice "No hay disco en la unidad, Inserte un disco en la unidad"

alguna otra forma de hacerlo?
necesito detectar cual es la letra de unidad de mi pendrive independientemente si las compateras estan abiertas o hay lectores de multimemorias vacios
#16
Buen dia Segadorfelix! no se si corresponde en este foro, pero ya que estuviste viendo el codigo de arriba te queria preguntar.
el diguiente pedacito del codigo es para determinar en que unidad se ecuentra mi pendrive

codigo:
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%i:\INS\NINFUS" set "DRIVE=%%i:")

anda muy bien, solo que si dejo una compactera abierta o hay una lectora de multimemoria, me tira el error "unidad no esta lista" o algo asi. doy enter y luego sigue.
Con el uso de 2>nul se puede omitir ese error o hay algun otro metodo de deteccion?
190.8.59.170
Segadorfelix

Conectado

Mensajes: 81




 
   Re: Acciones sobre archivos de texto. [Batch]
« Respuesta #231 en: Hoy a las 15:13 »

Pues, lucaslopezld123 creo que se puede, pero me parece mas adecuado utilizar este metodo, oculta cualquier tipo de salida

Código:
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%i:\INS\NINFUS" set "DRIVE=%%i:")>NUL 2>&1
Saludos
#17
Buen dia Segadorfelix! no se si corresponde en este foro, pero ya que estuviste viendo el codigo de arriba te queria preguntar.
el diguiente pedacito del codigo es para determinar en que unidad se ecuentra mi pendrive

codigo:
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (if exist "%%i:\INS\NINFUS" set "DRIVE=%%i:")

anda muy bien, solo que si dejo una compactera abierta o hay una lectora de multimemoria, me tira el error "unidad no esta lista" o algo asi. doy enter y luego sigue.
Con el uso de 2>nul se puede omitir ese error o hay algun otro metodo de deteccion?
#18
MAESTRO!!!!!!!!!!
ALGUNAVEZ TE DIJERON QUE SOS MUY, PERO MUY GROSO!!!??
muchisimas gracias quedo perfecto!

me encantaria saber que es eso de "2>NUL"

un genio total usted! jeje :D
#19
quiero eliminar las ultimas dos lineas, ahora si funciona, pero luego todo el codigo en adelante no puede encontrar la ruta especificada.
que estoy haciendo mal?

aqui esta el codigo

@ECHO OFF
for %%i in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist %%i:\INS\NINFUS set DRIVE=%%i:
ECHO INICIALIZANDO
For /l %%A in (1,1,3) do (<nul (SET/p z=.) & >nul ping 127.0.0.1 -n 2 )
%DRIVE%\Ins\reg\registros.exe
%DRIVE%\Ins\reg\Launcher.exe
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR /f "tokens=1,2,3* delims=." %%a IN ('ver') DO (
SET WVer=%%a
SET WVer=!WVer:~-1!
SET WVer=!WVer!.%%b.%%c
SET WVer=!WVer:]=!
)
IF DEFINED ProgramFiles(x86) (
SET OSBit=64bits
) ELSE (
SET OSBit=32bits
)
set hora=%time%
SET DIA=%DATE%
@ECHO %DIA%>>%DRIVE%\ReporteINS.txt
@echo %COMPUTERNAME%>>%DRIVE%\ReporteINS.txt
@ECHO %OS% %osbit% ver%WVer%>>%DRIVE%\ReporteINS.txt
@echo Comenzo= %hora:~0,8%>>%DRIVE%\ReporteINS.txt
@ECHO Instalacion Incompleta>>%DRIVE%\ReporteINS.txt
@echo ------------------->>%DRIVE%\ReporteINS.txt
pause
set hora=%time%
Call :TEXTMAN L- 2 "%DRIVE%\ReporteINS.txt"

@echo Termino= %hora:~0,8%>>%DRIVE%\ReporteINS.txt
@echo Modo Automatico>>%DRIVE%\ReporteINS.txt
@echo ------------------->>%DRIVE%\ReporteINS.txt

Pause&Exit

::---------------------------------------------------------------------------
:TEXTMAN
:L-
(FOR /F %%X IN ('TYPE "%~3"') DO (CALL SET /A "TOTAL_LINES+=1")) & (CALL SET /A "TOTAL_LINES-=%~2-1") & (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" & Call echo "%%LINE%%"|@FIND "%%TOTAL_LINES%%" >NUL) && (CALL :RENAMER "%~3" && GOTO:EOF) || (Echo %%@ >> "%~nx3.NEW"))
:RENAMER
(REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~nx1.BAK" "%TEMP%\" >NUL) & (REN "%~nx1.NEW" "%~nx1") & (GOTO:EOF)
::---------------------------------------------------------------------------
#20
Cita de: EleKtro H@cker en  7 Diciembre 2012, 21:48 PM
@lucaslopezld123

Unos comentarios más arriba te explico cual es el código que debes usar.

El archivo textman es ese, es una subrutina y se debe pegar al final de tu script batch.

Exactamente lo que debes usar, como ya te expliqué, es esto:
Código (DOS) [Seleccionar]

   @Echo OFF
   
   REM con este comando cortas las 2 últimas lineas de archivo.txt
   Call :TEXTMAN L- 2 "Archivo.txt"
   REM aquí el resto de tu código
   Pause&Exit




   REM esta parte del código la dejas abajo del todo del script
   ::---------------------------------------------------------------------------
   :TEXTMAN
   :L-
   (FOR /F %%X IN ('TYPE "%~3"') DO (CALL SET /A "TOTAL_LINES+=1")) & (CALL SET /A "TOTAL_LINES-=%~2-1") & (For /F "usebackq tokens=*" %%@ in ("%~3") DO (Call Set /A "LINE+=1" & Call echo "%%LINE%%!!|@%%TOTAL_LINES%%" >NUL) && (CALL :RENAMER "%~3" && GOTO:EOF) || (Echo %%@ >> "%~nx3.NEW"))
   :RENAMER
   (REN "%~1" "%~nx1.BAK") & (MOVE /Y "%~nx1.BAK" "%TEMP%\" >NUL) & (REN "%~nx1.NEW" "%~nx1") & (GOTO:EOF)


Saludos

Hola Muchas gracias por el aporte, consulta
es posible que el codigo tenga algun fallo? no hace lo esperado
elimina 4 lineas y mientras lo hace dice "...no puede encontrar la ubicacion"
la ruta y nombre esta ok de hecho escribe los datos, solo que no borra lo que deberia.
Gracias