elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Ayuda con BAT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con BAT  (Leído 2,637 veces)
elecktra

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Ayuda con BAT
« en: 13 Abril 2009, 15:22 pm »

Hola gente como estan? estoy necesitando de su ayuda.
Tengo que hacer un BAT que realice lo siguiente.
Teniendo Windows 2000, Xp Pro y Xp Home, que me identifeque la versión de windows y guarde la info en una variable.

Despues que segun la version de windows que detecte ejecute un codigo, el codigo ya lo hice pero me falta la parte de qeu busque la version de windows y segun loq eu encuentre ejecute el codigo.

tengo una idea de como hacerla con los IF pero no estoy seguro.

Otra duda que etngo es que por ejemplo en el BAT para remplazar el disco ocal pongo %HOMEDRIVE%
como puedo remplazar "Documents and Settings"\"Usuario" la idea es porque tengo que copiar un archivo en la carpeta del usuario que esta logueqdo en ese momento.

La ultima duda, para matar procesos uso.
Windows XP Pro: taskkill /F /IM
Windows XP Home: tskill /F /IM - Es correcto este?
Y como hago para matar procesos en Widnows 2000?
Gracias.


En línea

Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ayuda con BAT
« Respuesta #1 en: 13 Abril 2009, 16:25 pm »

Sistema operativo:
http://foro.elhacker.net/scripting/batch_detector_de_sistemas_operativos-t247905.0.html

Carpeta de usuario
Código
  1. %USERPROFILE%

tskill no acepta /IM
Código
  1. C:\>TSKILL /?
  2. Termina un proceso.
  3.  
  4. TSKILL idproceso | nombreproceso [/SERVER:nombreservidor]
  5.       [/ID:idsesión | /A] [/V]
  6.  
  7.  idproceso           Id. del proceso para detener.
  8.  nombreproceso       Nombre del proceso para detener.
  9.  /SERVER:nombreservidor  Servidor que contiene el id de proceso (el actual
  10.                      es el predeterminado).
  11.                      Especifíquese /ID o /A al usar el nombre de proceso
  12.                      y /SERVER
  13.  /ID:idsesión       Proceso de detención ejecutándose bajo la sesión
  14.                     especificada.
  15.  /A                  Proceso de detención ejecutándose bajo TODAS las
  16.                      sesiones.
  17.  /V                  Muestra información acerca de las acciones que se
  18.                      están ejecutando.

Kill en win2k
http://support.microsoft.com/kb/301423
http://www.microsoft.com/downloads/details.aspx?familyid=F08D28F3-B835-4847-B810-BB6539362473&displaylang=en

Saludos  :P


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
elecktra

Desconectado Desconectado

Mensajes: 120


Ver Perfil
Re: Ayuda con BAT
« Respuesta #2 en: 13 Abril 2009, 17:55 pm »

Hola Gracias por al respuesta, pero tengo uan duda, el detector de systema operativo, no me da la diferencia entre Windwos XP pro y Home, porque el problema es por lo que lei, que Windows Xp Pro utiliza taskkill para matar un proceso y xp home usa tskill, estoy en lo correcto?

Con respecto a lo de windows 200 ya lo ahbia visto, pero necesitaria hace un codigo sin tener que instalar las herramientas esas, ya qeu tengo que mandar el codigo por mail a casi 30 maquinas que estan en diferentes provincias de Argentiona, y no tienen permisos para instalar programas.

Gracias.
« Última modificación: 13 Abril 2009, 17:57 pm por elecktra » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ayuda con BAT
« Respuesta #3 en: 13 Abril 2009, 20:23 pm »

En el caso de Windows XP, hay alguna smaneras de sacar que sistema es :

Código:
C:\>systeminfo | findstr /r "XP"
Nombre del sistema operativo:              Microsoft Windows XP Professional

C:\>
ó:

Código:
C:\>wmic os get name
Name
Microsoft Windows XP Professional|C:\WINDOWS|\Device\Harddisk0\Partition1


C:\>
Ahora, esto lo pudieras unir con el codigo que te puso Novlucker:

Código:
@echo off
rem Universal Batch Operating System Detector
rem Based on work of Timo Salmi found in http://www.netikka.net/tsneti/info/tscmd004.htm
rem Writted by 0x0309
rem e-mail: 0x0309@-gmail.com (without dash)
rem version 11-3-2009 v1.1
rem Tested succesfully in:
rem  MS-DOS 5.0
rem  MS-DOS 6.0
rem  MS-DOS 6.21
rem  MS-DOS 6.22
rem  MS-DOS 7.10
rem  Windows 95 b
rem  Windows NT 4.0 Workstation
rem  Windows 98 SE
rem  Windows 2000 Server
rem  Windows XP 32 bit
rem  Windows XP 64 bit (2003 version)
rem  Windows Vista
rem  Windows 7

set isnt=false
echo.>nul & set isnt=true
if true==%isnt% goto _nt

:_dos9x
set _os_=UNKNOW
echo Test|find "Fail">nul
if errorlevel 0 if not errorlevel 1 set _os_=MSDOS5-621
if not %_os_%==UNKNOW goto _resume
ver | find.exe /i "MS-DOS" >nul
if errorlevel 0 if not errorlevel 1 set _os_=MSDOS622-710
ver | find.exe /i "Windows 95" >nul
if errorlevel 0 if not errorlevel 1 set _os_=95
ver | find.exe /i "Windows 98" >nul
if errorlevel 0 if not errorlevel 1 set _os_=98
ver | find.exe /i "Windows Millennium" >nul
if errorlevel 0 if not errorlevel 1 set _os_=ME
goto _resume

:_nt
net.exe config workstation <nul 1>&0 2>&1
if not errorlevel 0 goto _vermode
if errorlevel 1 goto _vermode
goto _nt_
:_vermode
for /f "tokens=* eol=" %%a in ('ver') do (set _os_=%%a)
goto _eval_
:_nt_
for /f "skip=4 tokens=* eol=" %%a in ('net.exe config workstation') do (
echo.%%a | find.exe /i "Windows" >nul
if errorlevel 0 if not errorlevel 1 set "_line=%%a"&goto _n_t_
)
:_n_t_
set _arg=%_line:"=%&set /a _tk=1
call :_cut %_arg%
for /f "tokens=%_tk%,* eol=" %%a in ("%_line%") do (set _os_=%%a %%b)
set "_arg="&set "_tk="&set "_line="
:_eval_
find.exe 1>nul 2>&1
if errorlevel 9009 goto _unknow
set _os_ | find.exe /i " NT"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=NT&goto _resume
set _os_ | find.exe /i " 2000"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2000&goto _resume
set _os_ | find.exe /i " 2002"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " XP"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " 5.1"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " 5.2"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP64-2003&goto _resume
set _os_ | find.exe /i " 2003"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2003&goto _resume
set _os_ | find.exe /i " 2008"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2008&goto _resume
set _os_ | find.exe /i " 6.0"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2008-VISTA&goto _resume
set _os_ | find.exe /i " Vista"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=VISTA&goto _resume
set _os_ | find.exe /i " 6.1"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=SEVEN&goto _resume
set _os_ | find.exe /i " 7"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=SEVEN&goto _resume
:_unknow
set _os_=UNKNOW
goto _resume

:_cut
set _arg=%1&shift
if /i not [%_arg%]==[Windows] (set /a _tk=%_tk%+1&goto:_cut)
goto :eof

:_resume
echo.System: %_os_%
for /f "tokens=1 delims=|" %%_ in ('wmic os get name ^| findstr /r /v "^Name"') do (
echo %%_
)
pause
Salida :
Código:
System: XP
^Z
Microsoft Windows XP Professional
Presione una tecla para continuar . . .

Windows 2000 no lo he usado :(

Saludos.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Novlucker
Ninja y
Colaborador
***
Desconectado Desconectado

Mensajes: 10.683

Yo que tu lo pienso dos veces


Ver Perfil
Re: Ayuda con BAT
« Respuesta #4 en: 13 Abril 2009, 20:35 pm »

Si logras entender el wmic que utiliza Leo, puedes sacarle mucho jugo, el problema es que esta presente desde win XP y server 2003, por lo que en el 2k no debería de estar  :-\
La otra contra es que necesitas privilegios para poder acceder, aunque algunas veces puede no estar deshabilitado  :-\(debería de estarlo a nivel empresarial)

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
0x0309

Desconectado Desconectado

Mensajes: 215


Ver Perfil
Re: Ayuda con BAT
« Respuesta #5 en: 14 Abril 2009, 03:54 am »

aquí adapté el código, para que identifique el xp.

Código:
@echo off
rem Universal Batch Operating System Detector
rem Based on work of Timo Salmi found in http://www.netikka.net/tsneti/info/tscmd004.htm
rem Writted by 0x0309
rem e-mail: 0x0309@-gmail.com (without dash)
rem version 13-4-2009 v1.1.1
rem Tested succesfully in:
rem  MS-DOS 5.0
rem  MS-DOS 6.0
rem  MS-DOS 6.21
rem  MS-DOS 6.22
rem  MS-DOS 7.10
rem  Windows 95 b
rem  Windows NT 4.0 Workstation
rem  Windows 98 SE
rem  Windows 2000 Server
rem  Windows XP 32 bit
rem  Windows XP 64 bit (2003 version)
rem  Windows Vista
rem  Windows 7

set isnt=false
echo.>nul & set isnt=true
if true==%isnt% goto _nt

:_dos9x
set _os_=UNKNOW
echo Test|find "Fail">nul
if errorlevel 0 if not errorlevel 1 set _os_=MSDOS5-621
if not %_os_%==UNKNOW goto _resume
ver | find.exe /i "MS-DOS" >nul
if errorlevel 0 if not errorlevel 1 set _os_=MSDOS622-710
ver | find.exe /i "Windows 95" >nul
if errorlevel 0 if not errorlevel 1 set _os_=95
ver | find.exe /i "Windows 98" >nul
if errorlevel 0 if not errorlevel 1 set _os_=98
ver | find.exe /i "Windows Millennium" >nul
if errorlevel 0 if not errorlevel 1 set _os_=ME
goto _resume

:_nt
net.exe config workstation <nul 1>&0 2>&1
if not errorlevel 0 goto _vermode
if errorlevel 1 goto _vermode
goto _nt_
:_vermode
for /f "tokens=* eol=" %%a in ('ver') do (set _os_=%%a)
goto _eval_
:_nt_
for /f "skip=4 tokens=* eol=" %%a in ('net.exe config workstation') do (
echo.%%a | find.exe /i "Windows" >nul
if errorlevel 0 if not errorlevel 1 set "_line=%%a"&goto _n_t_
)
:_n_t_
set _arg=%_line:"=%&set /a _tk=1
call :_cut %_arg%
for /f "tokens=%_tk%,* eol=" %%a in ("%_line%") do (set _os_=%%a %%b)
set "_arg="&set "_tk="&set "_line="
:_eval_
find.exe 1>nul 2>&1
if errorlevel 9009 goto _unknow
set _os_ | find.exe /i " NT"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=NT&goto _resume
set _os_ | find.exe /i " 2000"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2000&goto _resume
set _os_ | find.exe /i " 2002"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " XP"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " 5.1"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP&goto _resume
set _os_ | find.exe /i " 5.2"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=XP64-2003&goto _resume
set _os_ | find.exe /i " 2003"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2003&goto _resume
set _os_ | find.exe /i " 2008"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2008&goto _resume
set _os_ | find.exe /i " 6.0"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=2008-VISTA&goto _resume
set _os_ | find.exe /i " Vista"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=VISTA&goto _resume
set _os_ | find.exe /i " 6.1"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=SEVEN&goto _resume
set _os_ | find.exe /i " 7"  >nul 2>&1
if errorlevel 0 if not errorlevel 1 set _os_=SEVEN&goto _resume
:_unknow
set _os_=UNKNOW
goto _resume

:_cut
set _arg=%1&shift
if /i not [%_arg%]==[Windows] (set /a _tk=%_tk%+1&goto:_cut)
goto :eof

:_resume
echo.%_os_% | find.exe /i "XP" >nul
if not errorlevel 0 goto _resume_
if errorlevel 1 goto _resume_
systeminfo.exe 2>nul | find.exe /i "Microsoft Windows" | find.exe /i "Professional" >nul
if errorlevel 0 if not errorlevel 1 set _os_=XP_PROFESSIONAL&goto _resume_
systeminfo.exe 2>nul | find.exe /i "Microsoft Windows" | find.exe /i "Home" >nul
if errorlevel 0 if not errorlevel 1 set _os_=XP_HOME&goto _resume_

:_resume_
echo.System: %_os_%

pause


« Última modificación: 14 Abril 2009, 04:00 am por 0x0309 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines