Applescript uitdaging?

Jo luitjes,

Ik ben een druk mens als ik achter mijn computer zit. Ik maak veel files aan. En ik douw ze altijd op mijn desktop, waardoor deze vaak overvol wordt en over andere bestanden heen liggen zodat ik niet de bestanden onder een ander bestand kan selecteren of openen.

Toen kwam ik met het volgende idee.

Via applescript chekken hoeveel bestanden er op het bureaublad staan.
Als het bureaublad vol is moet er een nieuwe map op het bureaublad verschijnen met als naam de datum wanneer die map is aangemaakt en daar alle bestanden behalve de externe drives in komen. Zodat alle troep in van het bureaublad weg is en in deze map zit.

Zou dit kunnen met Apple Script? En is er iemand die zoiets kan maken? Het lijkt me echt fukking relekst zoiets te hebben.

Thx :slight_smile:

Ik gooi eigenlijk altijd alle mappen en bestanden in een hoofdmap (bv 'Klanten') op de HD (dus niet op het Buroblad). Die staat dan meestal in de Dock en werk vandaar uit. Hasjtikke overzichtelijk, snel terug te vinden. En het maken/bijhouden van een goede mappenstructuur bespaart mij heel veel tijd. Klinkt saaaai maar heb weinig rommel en er erg veel profijt van.

met folderorg x (ff zoeken op versiontracker) kan je een mapactie toewijzen aan een map en telkens je daarin een file gooit komt die netjes in een map met de datum van die dag te staan. heel gemakkelijk en het is freeware

succes ermee

Maar dit is niet simpel te doen door middel van Applescript?

[code:1:faecc89210] tell application "Finder" set maxCount to 1 set fileCount to count every file in desktop

if fileCount >= maxCount then
	set theDate to current date
	set today to (day of theDate as string) & "-" & (month of theDate as integer) & "-" & (year of theDate as integer)
	
	if not (folder (today as string) exists) then
		make new folder in desktop with properties {name:today}
	end if
	
	set filesOnDesktop to every file in desktop
	
	repeat with currentFile in filesOnDesktop
		if not (currentFile is locked) then
			move currentFile to folder (today)
		else
			copy currentFile to folder (today)
			delete currentFile
		end if
	end repeat
end if

end tell
[/code:1:faecc89210]

Dit kun je in je cron zetten, of met een paar kleine aanpassingen als folder action gebruiken.
Pas “maxCount” aan om het maximaal aantal bestanden in te stellen.
Suc6.

Ik heb weinig verstand van dat cron enzo. Hoe laat ik zoiets werken?

Open een terminal. Typ "crontab -e" Dit opent jouw eigen cron in vi. Voeg de volgende regel toe:

*/10 * * * * osascript ~/Library/Scripts/CleanUpDesktop.scpt

Tussen elk stukje zit een TAB, geen spaties!
Dit script draait elke 10 minuten. Je script moet dus in je home directory onder Library/Scripts staan.

Je kunt ook eventueel Cronnix downloaden. Dit is een GUI voor je cron. Handig als je niet thuis bent in vi.

[quote:d8621fd47a="Zimph"]Open een terminal. Typ "crontab -e" Dit opent jouw eigen cron in vi. Voeg de volgende regel toe:

*/10 * * * * osascript ~/Library/Scripts/CleanUpDesktop.scpt

Tussen elk stukje zit een TAB, geen spaties!
Dit script draait elke 10 minuten. Je script moet dus in je home directory onder Library/Scripts staan.

Je kunt ook eventueel Cronnix downloaden. Dit is een GUI voor je cron. Handig als je niet thuis bent in vi.[/quote:d8621fd47a]

Wat bedoel je met TAB? Na ieder woord? Of het inspringen zodat de code overzichtbaar is?

Nee, de tab toets. Tussen de sterretjes en de rest.

Dus /10[tab][tab]* …etc…

Heb cronnix draaien. Heb het clean up script in de scripts folder gedaan. Heb ingesteld iedere minuut chekken. Dus onder Min. staat 1, en onder de anderen een *

Als ik nu rechtermuisknop op die command klik, en dan Run Now. Dan werkt ie perfect. Maar als ik het programma aanlaat of sluit, en ik wacht 1 minuut of langer, dan doet het gewoon helemaal niets. Wat kan hier fout gaan?

Euh. Je hebt hem nu ingesteld op de 1ste minuut van elk uur. Probeer eens */1 in te voeren.

Voor de mensen die ook geinteresseerd zijn, dit is de laatste versie van het script:

[code:1:a972be4e63]
(*
Desktop Cleanup Script
Copyright ©2004 Zimph

This script will look for all files and folders on your desktop,
and archive them in a new folder if there are more than X items on your desktop.
To exclude folders from this routine, mark them with a gray label, or add their names to the exclude list
*)

property SpecialLabelIndex : 7 – GRAY
property namesToExclude : {"Example Folder", "Example Folder 2"}
property dateSeparator : "-"
property maxNumberOfFilesOnDesktop : 50

property volumeProp : "Volume" – DO NOT EDIT

tell application "Finder"
set fileCount to count every file in desktop
set folderCount to count (every folder in desktop whose name is not in namesToExclude and label index is not SpecialLabelIndex)

if (fileCount + folderCount) >= maxNumberOfFilesOnDesktop then
	set theDate to current date
	set today to (day of theDate as string) & dateSeparator & (month of theDate as integer) & dateSeparator & (year of theDate as integer)
	
	if not (folder (today as string) exists) then
		make new folder in desktop with properties {name:today}
		set label index of folder (today) to SpecialLabelIndex
	end if
	
	set filesOnDesktop to every file in desktop
	set foldersOnDesktop to every folder in desktop whose name is not in namesToExclude and label index is not SpecialLabelIndex and kind is not volumeProp
	
	repeat with currentFile in filesOnDesktop
		if not (currentFile is locked) then
			move currentFile to folder (today)
		else
			copy currentFile to folder (today)
			delete currentFile
		end if
	end repeat
	
	repeat with currentFolder in foldersOnDesktop
		if not (name of currentFolder is today) then
			move currentFolder to folder (today)
		end if
	end repeat
end if

end tell
[/code:1:a972be4e63]