On the Mac I have a handler that can move a folder to the trash by using an AppleScript that I call with a shell command.
I have a custom property of the stack “Scripts" cDeleteMacFolderScript that contains a template script
Code: Select all
tell application "Finder"
delete "**foldertodelete**"
end tell
Code: Select all
on deletemacOSfolder folderMacpath
put the cDeleteMacFolderScript of stack “Scripts" into thescript
replace "**foldertodelete**" with folderMacpath in thescript
do thescript as applescript
end deletemacOSfolder
I have been trying to do the same thing with Windows and not having any luck.
First Challenge was finding the path to the recycle bin. Using SpecialfolderPath() to get the path for the Recycle Bin did not work. See the bug report here. https://quality.livecode.com/show_bug.cgi?id=22995 <https://quality.livecode.com/show_bug.cgi?id=22995>
I did manage write a script using the Windows shell commands to get a path to the user’s Recycle Bin and then move a directory to it using the LiveCode rename command. The folder is actually moved to the user's Recycle Bin but when you Open the Recycle Bin in the Windows Explorer GUI you don’t see the folder.
Here is the script I used.
Code: Select all
on mouseUp pButtonNumber
answer folder "Select the folder to move to Recycle Bin folder."
put it into tFoldertoRecycle
if platform() is "win32" or platform() is "win64" then
MoveFolderToRecycleBin tFolderToRecycle
end if
end mouseUp
command MoveFolderToRecycleBin pFolderToMove
put SpecialFolderPath_RecycleBinFolder() into tRecycleBinPath
replace "/" with "\" in tRecycleBinPath
set the itemDelimiter to "\"
put the last item of pFolderToMove into tFolderName
put tRecycleBinPath & "\" & tFolderName into tRecycleBinPath
put pFolderToMove into line 1 of field 1
put tRecycleBinPath &Cr &CR into line 2 of field 1
rename folder pFolderToMove to tRecycleBinPath
end MoveFolderToRecycleBin
function SpecialFolderPath_RecycleBinFolder
put shell ("whoami /user") into tUserInformation
set the itemDelimiter to space
put item 2 of line 7 of tUserInformation into tUserSID
put "C:\$Recycle.Bin\" & tUserSID into tUserRecycleBinPath
return tUserRecycleBinPath
end SpecialFolderPath_RecycleBinFolder
You can see that the folder was actually moved there by using the Windows Command Prompt program. If you type:
Code: Select all
C:\> cd \$Recycle.Bin
C: \$Recycle.Bin> dir /s /a
- files or folders the user dragged there in the GUI are there (but their file names are not the same as their actual names)
- folders I moved there using the script above are also there (their folder names are the same as they were in their original location).
I have read a lot of posts and documentation on the Recycle Bin and know far more than I ever wanted to know about it but it seems that simply moving a file to the users directory for the user’s Recycle Bin does not actually put it in the “RecycleBin" as seen in the Windows Explorer GUI. I found a post that says that here.
https://superuser.com/questions/1520290 ... -partition
This folder (Recycle Bin) is a special folder, because if you double-click the folder within Explorer, it will open the Recycle Bin program, rather than show the contents of that folder. As a result, it will show you all files deleted in your current Windows Installation, and not what is actually inside that folder.
I don’t see any other way of Recycling a folder, or a file for that matter using the shell short of buying and installing one of a couple of utility programs that popped up in some of my searches. I can’t expect users to do that.
I know you can delete a folder and its contents using the revDeleteFolder Command. This removes the folder and files instantly. I was hoping there was a way to just move them the Recycle Bin but it does not appear to be possible from shell. However the fact that there are utilities that do it mean there must be some way programmatically.
Does anyone know of a way to accomplish this?
Thanks
Martin Koob
VideoLinkwell