AppleScript - Skapa mapp och flytta

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Malmö
  • 2012-07-11 13:04

Jag har under en tid försökt skapa ett skript som sedan ska ligga som ett mappkommando så att så fort en eller flera filer droppas i mappen så ska scriptet hugga namnet på filen/filerna och skapa en mapp/mappar med samma namn, till vilken/vilka sedan filen/filerna flyttas. Därefter ska innehållet i huvudmappen flyttas till en statisk mapp på min NAS.

För att försöka åskådliggöra det lite bättre så kan det se ut så här:

1) Jag flyttar filerna test1.m4v, test2.m4v och test3.m4v till mappen "Temp" som har scriptet som mappkommando.
2) När detta görs så skapas det mappar i "Temp" vid namn "test1", "test2" och "test3".
3) Nu flyttas .m4v-filerna in i sin respektive mapp så att t ex mappen "test1" nu innehåller filen test1.m4v...osv.
4) Nu ska innehållet i mappen "Temp", alltså de tre nyskapade mapparna och dess innehåll, flyttas till en mapp på min NAS.

Det är i just punkt fyra som det är lite klurigt för mig. När jag under mitt testande har haft målmappen för punkt fyra lokalt på datorn så har skriptet gjort precis så det ska göra, till punkt och pricka. Men, när jag sätter målmappen till en mapp på min NAS så fungerar det inte likadant, då flyttas inte innehållet i mappen "Temp" längre utan det kopieras.

Hur får jag rätt på detta? All hjälp är uppskattad, se kod nedan.

on adding folder items to theFolder after receiving theFiles
	repeat with aFile in theFiles
		tell application "System Events" to set {Nm, Ex, pPath} to aFile's {name, name extension, POSIX path of container}
		set BN to text 1 thru ((get offset of "." & Ex in Nm) - 1) of Nm
		set thePath to (pPath & "/" & BN & "/" as text)
		do shell script "mkdir -p " & quoted form of thePath
		delay 0.5
		tell application "Finder" to move aFile to POSIX file thePath
	end repeat
	set newPath to "/Volumes/video/Movies/"
	tell application "Finder" to move entire contents of theFolder to POSIX file newPath
end adding folder items to

Är tyvärr inte så duktig på AppleScript men jag tror att applikationen Hazel kan göra detta åt dig.

  • Medlem
  • Malmö
  • 2012-07-11 17:42
Ursprungligen av barbapappa_86:

Är tyvärr inte så duktig på AppleScript men jag tror att applikationen Hazel kan göra detta åt dig.

Nja, jag betalar inte hela $25 för något som man ska kan koda själv

Jag får fundera fram bästa sättet man skulle applicera detta i mitt skript.

Ursprungligen av Baron:

Annars får du väl radera det du har kopierat, efter att ha verifierat kopieringen.

Jo, det kan man ju men då tappar man poängen med automatiseringen.

Btw, jag hittade nu detta :

Citat:

If an object specified by the referenceToObject parameter is located on a different
disk from the container specified by the referenceToContainer parameter, the
Move command copies the object instead of moving it, but doesn’t provide any
warning that it has failed to remove the original object. To move any object
from one disk to another, copy the object to the new disk (using either the
Move or the Copy command), then delete the original object using the Delete
command. See page 118 for an example of a script that uses this technique.

  • Medlem
  • 2012-07-11 18:32
Ursprungligen av zinned:

Jo, det kan man ju men då tappar man poängen med automatiseringen.

Jag menar förstås att du ska låta skriptet verifiera och radera.

  • Medlem
  • 2012-07-11 16:17

Annars får du väl radera det du har kopierat, efter att ha verifierat kopieringen.

  • Medlem
  • Malmö
  • 2012-07-12 13:06

Så där, nu har jag lyckats ändra scriptet så det fungerar, se nedan:

on adding folder items to theFolder after receiving theFiles	repeat with aFile in theFiles
		tell application "System Events" to set {Nm, Ex, pPath} to aFile's {name, name extension, POSIX path of container}
		set BN to text 1 thru ((get offset of "." & Ex in Nm) - 1) of Nm
		set thePath to (pPath & "/" & BN & "/" as text)
		do shell script "mkdir -p " & quoted form of thePath
		delay 0.5
		tell application "Finder" to move aFile to POSIX file thePath
		set newPath to ("/Users/Bjorn/Desktop/test2/" as text)
		
		set fposix1 to the quoted form of the POSIX path of thePath
		do shell script "mv " & fposix1 & " /Volumes/video/Movies/"
	end repeat
end adding folder items to

Tack för tipset, Baron

1
Bevaka tråden