(Solucionado) Estoy bloqueado con este batch :S

Iniciado por Eleкtro, 9 Noviembre 2011, 16:31 PM

0 Miembros y 1 Visitante están viendo este tema.

Eleкtro

No se como hacer este batch...

Por un lado tengo estas carpetas:


Y lo que quiero es hacer un batch que verifique si existe MÁS DE UNA carpeta de cada, y si encuentra más de una, entonces que borre las últimas...

Por ejemplo, de "Display.ControlPanel.*" hay 3 carpetas, pues quiero que borre la .0 y .1



Estoy intentando hacer el script pero me he bloqueado en el procedimiento del call... Solo he conseguido que logre reconocer que existen 3 carpetas de Display.ControlPanel.* xD
Código (dos) [Seleccionar]

@echo off

dir /b "%ProgramFiles%\NVIDIA Corporation\Installer2\Display.ControlPanel.*">1.txt

type 1.txt | FIND /c /v "" > lineas.txt


for /f "tokens=*" %%a in ('type "lineas.txt"') DO (
Set lineas=%%a
Call :Deltete_NVFolder
)

pause

:Deltete_NVFolder
If %lineas% GTR 1 (
echo "%ProgramFiles%\NVIDIA Corporation\Installer2\Display.ControlPanel."
pause
) ELSE (
Goto :eof
)

PAUSE










Eleкtro

#1
mmm repasando el subforo me he dado cuenta que no "finalicé" este tema xD

Hace tiempo me vino a la mente la solución con la ayuda de un miembro de otro foro, solo habia que trabajar mejor el problema, era fácil:

Aqui lo dejo por si a alguien le sirve algún día  :xD :xD :xD

PD: el code sirve para borrar las actualizaciones de nVidia, Las que no se usan (ni se borran, las muy put**).

Código (dos) [Seleccionar]

@echo off

If exist "%TEMP%\nvidia*.txt" (
     Del /Q "%TEMP%\NvidiaFolders.txt" >nul
     Del /Q "%TEMP%\NvidiaFoldersREVERSE.txt" >nul
     Del /Q "%TEMP%\NvidiaFoldersLINES.txt" >nul
)


Call :nVUpdates Display.3DVision
Call :nVUpdates Display.ControlPanel
Call :nVUpdates Display.Driver
Call :nVUpdates Display.NVIRUSB
Call :nVUpdates Display.PhysX
Call :nVUpdates Display.Update
Call :nVUpdates installer
Call :nVUpdates NVIDIA.Update

echo listo
pause >nul



:nVUpdates
:~~~~~~~~~
If not exist "%ProgramFiles%\NVIDIA Corporation\Installer2\%1.*" (Goto :EOF)

dir /b "%ProgramFiles%\NVIDIA Corporation\Installer2\%1.*">"%TEMP%\NvidiaFolders.txt"
type "%TEMP%\NvidiaFolders.txt" | FIND /c /v "" > "%TEMP%\NvidiaFoldersLINES.txt"

for /f "tokens=*" %%a in ('type "%TEMP%\NvidiaFoldersLINES.txt"') DO (
Set lineas=%%a
Call :Delete_nVUpdate
)
goto :EOF



:Delete_nVUpdate
:~~~~~~~~~~~~~~~
Sort /R "%TEMP%\NvidiaFolders.txt" > "%TEMP%\NvidiaFoldersREVERSE.txt"

If %lineas% GTR 1 (
   for /f "skip=1 tokens=*" %%A in ('type "%TEMP%\NvidiaFoldersREVERSE.txt"') do (RD /S /Q "%ProgramFiles%\NVIDIA Corporation\Installer2\%%A")
) ELSE (
   Goto :eof
)