/* * [BatikRoedy.java] * * Summary: Delete junk files, customised for Roedy's AMD FX-6100 computer. * * Copyright: (c) 1998-2017 Roedy Green, Canadian Mind Products, http://mindprod.com * * Licence: This software may be copied and used freely for any purpose but military. * http://mindprod.com/contact/nonmil.html * * Requires: JDK 1.8+ * * Created with: JetBrains IntelliJ IDEA IDE http://www.jetbrains.com/idea/ * * Version History: * 1.1 2007-10-28 avoid delete install.log and batchreporttemplate.css */ package com.mindprod.batik; import com.mindprod.common18.Build; import com.mindprod.filter.EndsWithFilter; import com.mindprod.filter.ExtensionListFilter; import com.mindprod.filter.FileListFilter; import com.mindprod.filter.JunkFileFilter; import com.mindprod.filter.MultiFilter; import com.mindprod.filter.OnlyDirectoriesFilter; import com.mindprod.filter.StartsWithFilter; import java.awt.Toolkit; import java.io.File; import java.io.FilenameFilter; import static com.mindprod.batik.Batik.*; import static java.lang.System.*; /** * Delete junk files, customised for Roedy's AMD FX-6100 computer. * * @author Roedy Green, Canadian Mind Products * @version 1.1 2007-10-28 avoid delete install.log and batchreporttemplate.css * @since 1998 */ public final class BatikRoedy { /** * TCC executable */ private static String TCC = "F:/Program Files/JPSoft/TCMD20/tcc.exe"; /** * make a noise with pc speaker */ private static void beep() { Toolkit.getDefaultToolkit().beep(); } /** * CUSTOM Script to clean all the junk on my Acer Vista machine. You would modify this script section to suit your * machine and recompile. I repeat, you need to extensively modify this for your own use!! Standard main, cleans all * drives of junk files. * * @param args not used. */ public static void main( String args[] ) { final File userAppData = new File( "C:/Users/roedy/AppData" ); final File userAppDataLocal = new File( "C:/Users/roedy/AppData/Local" ); final File explorer = new File( "C:/Users/roedy/AppData/Local/Microsoft/Windows/Explorer" ); final File windows = new File( "C:/Windows" ); final File allUsers = new File( "C:/Users/All Users" ); try { // Do special clearing first, wiping various temp directories of // all files and subdirs. // None of these methods will remove read-only or system files, // but they will remove hidden files. out.println(); out.println( "Batik Clearing temp and cache directories..." ); // Some of these directories are hidden, but we can delete contents // anyway // C: deleteDirContents( new File( "C:/ProgramData/TEMP" ), true ); deleteDirContents( new File( "C:/Users/roedy/.IntelliJIdea2017.3/system/log" ), true ); deleteDirContents( new File( "C:/Users/roedy/.IntelliJIdea2017.3/system/tmp" ), true ); deleteDirContents( new File( "C:/temp" ), true ); deleteDirContents( new File( "C:/tmp" ), true ); deleteDirContents( new File( allUsers, "Microsoft/Search/Data/Temp" ), true ); deleteDirContents( new File( allUsers, "Microsoft/Windows/WER/ReportQueue" ), true ); deleteDirContents( new File( allUsers, "TEMP" ), true ); deleteDirContents( new File( userAppData, "LocalLow/Temp" ), true ); deleteDirContents( new File( userAppDataLocal, "Google/Chrome/User Data/Default/JumpListIcons" ), true ); deleteDirContents( new File( userAppDataLocal, "Google/Chrome/User Data/Default/JumpListIconsOld" ), true ); deleteDirContents( new File( userAppDataLocal, "Google/Chrome/User Data/Default/Cache" ), true ); deleteDirContents( new File( userAppDataLocal, "Microsoft/Windows/Temporary Internet Files" ), true ); deleteDirContents( new File( userAppDataLocal, "Opera Software/Opera Stable/Cache" ), true ); deleteDirContents( new File( userAppDataLocal, "Opera Software/Opera Stable/Media Cache" ), true ); deleteDirContents( new File( userAppDataLocal, "Temp" ), true ); deleteDirContents( new File( userAppDataLocal, "Thunderbird/Profiles/p3ckb2lt.default/Cache" ), true ); deleteDirContents( new File( windows, "LiveKernelReports/WATCHDOG" ), true ); deleteDirContents( new File( windows, "ServiceProfiles/LocalService/AppData/Local/Temp" ), true ); deleteDirContents( new File( windows, "ServiceProfiles/NetworkService/AppData/Local/Temp" ), true ); deleteDirContents( new File( windows, "Temp" ), true ); deleteDirContents( new File( windows, "assembly/NativeImages_v2.0.50727_32/temp" ), true ); deleteDirContents( new File( windows, "assembly/NativeImages_v2.0.50727_64/temp" ), true ); deleteDirContents( new File( windows, "assembly/NativeImages_v4.0.30319_32/temp" ), true ); deleteDirContents( new File( windows, "assembly/NativeImages_v4.0.30319_64/temp" ), true ); deleteDirContents( new File( windows, "assembly/temp" ), true ); deleteFile( new File( userAppData, "Local/Apple Computer/Safari/Cache.db" ) ); deleteDirContents( new File( "C:/ProgramData/Application Data/temp" ), true ); deleteDirContents( new File( "C:/ProgramData/Microsoft/Windows/WER/Temp" ), true ); deleteDirContents( new File( "C:/ProgramData/TEMP" ), true ); deleteDirContents( new File( "C:/Users/Administrator/AppData/Local/Temp" ), true ); deleteDirContents( new File( "C:/Users/All Users/Application Data/temp" ), true ); deleteDirContents( new File( "C:/Users/All Users/TEMP" ), true ); deleteDirContents( new File( "C:/Users/Roedy/AppData/Local/Temp" ), true ); deleteDirContents( new File( "C:/Users/Roedy/AppData/Local/Temp/Temp0" ), true ); deleteDirContents( new File( "C:/Users/Roedy/AppData/Roaming/LibreOffice/4/user/temp" ), true ); deleteDirContents( new File( "C:/Users/Roedy/Local Settings/temp0" ), true ); deleteDirContents( new File( "C:/Users/admin/AppData/Local/Temp" ), true ); deleteDirContents( new File( "C:/Windows/Panther/Rollback/MachineIndependent/Transformers/CBS/boot_volume/WinLH/WinSxS/Temp" ), true ); deleteDirContents( new File( "C:/Windows/SysWOW64/Macromed/Temp" ), true ); deleteDirContents( new File( "C:/Windows/System32/DriverStore/Temp0" ), true ); deleteDirContents( new File( "C:/Windows/System32/Macromed/Temp0" ), true ); deleteDirContents( new File( "C:/Windows/Temp0" ), true ); deleteDirContents( new File( "C:/Windows/WinSxS/Temp" ), true ); deleteDirContents( new File( "C:/Windows/assembly/NativeImages_v2.0.50727_32/Temp" ), true ); deleteDirContents( new File( "C:/Windows/assembly/NativeImages_v2.0.50727_64/Temp" ), true ); deleteDirContents( new File( "C:/Windows/assembly/NativeImages_v4.0.30319_32/Temp" ), true ); deleteDirContents( new File( "C:/Windows/assembly/NativeImages_v4.0.30319_64/Temp" ), true ); deleteDirContents( new File( "C:/Windows/assembly/temp0" ), true ); // leave windows + "/winsxs/Temp and C:/Windows/winsxs/Temp/PendingRenames since all files locked by OS, // and they are not visible to Explorer. // leave C:/Windows/System32/DriverStore/Temp since all files locked by OS // D: deleteDirContents( new File( "D:/temp" ), true ); deleteDirContents( new File( "D:/tmp" ), true ); // E: final FilenameFilter newOldFilter = new ExtensionListFilter( "new", "old" ); setJunkFilter( newOldFilter ); cleanDir( new File( "E:/intellij/mp/out/production/j8/production/j8" ), false ); cleanDir( new File( "E:/intellij/mp/j8" ), false ); // delete __history backup dirs left behind by BlueGriffon. deleteDir( new File( "E:/mindprod/__history" ) ); deleteDir( new File( "E:/mindprod/applet/__history" ) ); deleteDir( new File( "E:/mindprod/applet/foot/__history" ) ); deleteDir( new File( "E:/mindprod/bgloss/__history" ) ); deleteDir( new File( "E:/mindprod/bgloss/foot/__history" ) ); deleteDir( new File( "E:/mindprod/book/__history" ) ); deleteDir( new File( "E:/mindprod/book/foot/__history" ) ); deleteDir( new File( "E:/mindprod/canada/__history" ) ); deleteDir( new File( "E:/mindprod/canada/foot/__history" ) ); deleteDir( new File( "E:/mindprod/contact/__history" ) ); deleteDir( new File( "E:/mindprod/contact/foot/__history" ) ); deleteDir( new File( "E:/mindprod/electronic/__history" ) ); deleteDir( new File( "E:/mindprod/electronic/foot/__history" ) ); deleteDir( new File( "E:/mindprod/feedback/__history" ) ); deleteDir( new File( "E:/mindprod/feedback/foot/__history" ) ); deleteDir( new File( "E:/mindprod/feedback/god/__history" ) ); deleteDir( new File( "E:/mindprod/feedback/god/foot/__history" ) ); deleteDir( new File( "E:/mindprod/ggloss/__history" ) ); deleteDir( new File( "E:/mindprod/ggloss/foot/__history" ) ); deleteDir( new File( "E:/mindprod/jgloss/__history" ) ); deleteDir( new File( "E:/mindprod/jgloss/foot/__history" ) ); deleteDir( new File( "E:/mindprod/quote/__history" ) ); deleteDir( new File( "E:/mindprod/quote/foot/__history" ) ); deleteDir( new File( "E:/mindprod/religion/__history" ) ); deleteDir( new File( "E:/mindprod/religion/foot/__history" ) ); deleteDirContents( new File( "E:/temp" ), true ); deleteDirContents( new File( "E:/tmp" ), true ); deleteDirContents( new File( "E:/vslick" ), false ); // F: deleteDirContents( new File( "F:/temp" ), true ); deleteDirContents( new File( "F:/tmp" ), true ); // H: } catch ( Exception e ) { err.println(); e.printStackTrace( err ); Toolkit.getDefaultToolkit().beep(); err.println( "Problem clearing temp directories." ); err.println(); } try { out.println( "Batik Clearing JET temp dirs" ); final File comMindprodDir = new File( Build.MINDPROD_SOURCE ); for ( String projectDirName : comMindprodDir.list( new OnlyDirectoriesFilter() ) ) { final File projectDir = new File( comMindprodDir, projectDirName ); deleteFile( new File( projectDir, "errinfo.$$$" ) ); assert projectDir != null : "null project"; final String[] jetDirNames = projectDir.list( new JETTempFilter() ); assert jetDirNames != null : "null jetDirNames"; for ( String jetDirName : jetDirNames ) { assert jetDirName != null : "jetDirName null"; final File jetDir = new File( projectDir, jetDirName ); deleteDirContents( jetDir, true ); deleteAndTrack( jetDir ); // delete entire dir once contents gone } } deleteDir( new File( "E:/jetdrive.temp" ) ); deleteDir( new File( "F:/jetdrive.temp" ) ); } catch ( Exception e ) { e.printStackTrace( err ); beep(); err.println( "Problem removing JET temporaries" ); err.println(); } try { out.println(); out.println( "Batik clearing thumbcaches" ); // delete thumbcache_*.db files final MultiFilter thumbcacheFilter = new MultiFilter( MultiFilter.FILES ); thumbcacheFilter.addMust( new StartsWithFilter( "thumbcache_" ) ); thumbcacheFilter.addMust( new EndsWithFilter( ".db" ) ); setJunkFilter( thumbcacheFilter ); // C:\Users\Roedy\AppData\Local\Microsoft\Windows\Explorer\thumbcache_xxxx.db cleanDir( explorer, true /* recursive */ ); // define directories I want left untouched. There is no point is // combing huge Java directories for trash. There won't be any. // jet pdb files are not junk, neither are postgre pdb files // usid inside cleanDir. Applied from here on. avoidDirs( "C:/ProgramData/NVIDIA Corporation", "C:/Program Files (x86)/IOBit", "C:/Program Files (x86)/Java", "C:/Program Files/Java", allUsers + "/IObit", allUsers + "/NVIDIA Corporation", userAppDataLocal + "/Microsoft/Windows/Explorer/IconCacheToDelete", userAppDataLocal + "/Temp/NVIDIA Corporation", "C:/Windows", "E:/Program Files/Java", "F:/Program Files (x86)/" + Build.JET_VERSION, "F:/Program Files/" + Build.JET_VERSION64, "F:/Program Files/", "F:/Program Files/PostgreSQL", "H:/dl" ); // out.println( "Batik clearing E:/com of compiler remnants" ); setJunkFilter( new ExtensionListFilter( "exp", "filters", "lib", "obj", "sig", "suo", "user", "vaz", "vcxproj" ) ); cleanDir( new File( "E:/com" ), true ); // out.println( "Batik clearing E:/ab1/util of compiler remnants" ); final JunkFileFilter utilFilter = new JunkFileFilter(); // Delete either temp.* not temp*.* utilFilter.setStartsWith( "tmp_", "jet_err_", "temp_" ); utilFilter.setFilenames( "temp", "temp1", "temp2" ); utilFilter.setExtensions( "csm", "lst", "map", "obj", "ilk", "aps", "ncb", "pch", "pdb" ); setJunkFilter( utilFilter ); cleanDir( new File( "E:/ab1/util" ), true ); // giant scan of all dirs on all drives out.println( "Batik clearing all drives of junk extensions." ); // name must be temp, not just begin temp e.g. template. // delete_me*.del are the piles of junk left behind by 12 ghosts Trojan. final JunkFileFilter driveFilter = new JunkFileFilter(); // Delete either temp.* not temp*.* driveFilter.setStartsWith( "~cse", "delete_me", "_ts", "tmp_", "jet_err_" ); driveFilter.setEndsWith( "~" ); driveFilter.setFilenames( "temp", "temp1", "temp2" ); driveFilter.setExtensions( "$$$", "aps", "bak", "chk", "dmp", "ilk", "log", "marks", "ncb", "pch", "pdb", //* will leave Jet PDBs alone, because of avoiddirs "temp", "tmp" ); // don't delete any install.logs. They are needed for uninstall. final FileListFilter driveExceptions = new FileListFilter( "install.log" ); final MultiFilter driveCombi = new MultiFilter( MultiFilter.FILES ); driveCombi.addMust( driveFilter ); driveCombi.addNever( driveExceptions ); setJunkFilter( driveCombi ); // get rid of temp, log, temp etc . Leave H alone in case of bug. Don't kill backup. cleanDrives( 'C', 'D', 'E', 'F' ); out.println(); } catch ( Exception e ) { e.printStackTrace( err ); beep(); err.println( "Problem removing junk extensions." ); err.println(); } try { // rebuild 4NT quick directory index out.println( "Batik rebuilding TCC directory C: .. H: ..." ); // don't index D: just confuses. exec( "\"" + TCC + "\" /E:1900 /C CDD /S C:\\ D:\\ E:\\ F:\\ H:\\", true ); } catch ( Exception e ) { e.printStackTrace( err ); err.println( "Problem rebuilding TCC directory" ); err.println(); beep(); } // no longer touch dirs. Only do it just prior to defrag try { // empty recycle bins out.println( "Batik emptying recycle bins..." ); exec( "emptyrecyclebin.exe /Q", true ); } catch ( Exception e ) { e.printStackTrace( err ); beep(); out.println( "Problem emptying recycle bins" ); err.println(); } displayBytesDeleted(); out.println(); out.println( "Batik Done" ); } }