Change Directory in the Finder

@JimmyHartington..wow!!!!
this is the stuff dreams are made of lol :wink:

thx so much. in a related question then, can one use this to instead open a path rather move a selected file to one of the targets in that list you presented?

thx again so much!

Z

You are welcome.

Is it one selected file or multiple?
A mix of files and directories?

I would like to give it a shoot when I am back at my computer.

Hey Z,

I see you're trying to change the directory of the front Finder window.

AppleScript makes that pretty easy.

----------------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2019/01/09 16:27
# dMod: 2019/01/09 16:27 
# Appl: Finder
# Task: Change the Target of the Front Finder Window
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Finder, @Change, @Target, @Front, @Window
----------------------------------------------------------------

set newTarget to path to downloads folder

tell application "Finder"
   if window 1 exists then
      tell window 1
         if (its target as alias) ≠ newTarget then
            set its target to newTarget
         else
            beep 2
         end if
      end tell
   end if
end tell

----------------------------------------------------------------

Jimmy's “Open folder” macro could easily be repurposed to do this as well.

What locations specifically?

Easily.

-Chris

Here is my attempt with a macro, which moves the selected file/files to the folder you choose.
It does not work on with selected folders.

And as @ccstone writes, I did not notice you wanted to change directory. My solutions opens a new window in Finder.

Keyboard Maestro 8.2.4 “Move selected file to folder” Macro

Move selected file to folder.kmmacros (3.8 KB)

3 Likes

thx alot @JimmyHartington thats perfect for me!

Z

JimmyHartington:

This macro does not work for me. Everytime I run it, I get the error message

"Macro Cancelled
Open File failed with non-existent path
,’%Variable%LocaLFoldcrToOpen%,,. Macro "Open Fo..."

How do you get it to actually open the folder?

In the error message there seems to be a typo.
Have you copied the error message in or written it?

I copied it.

The good news is that I just tried it again, to verify the error message, and the darn thing worked. Have tried it twice more and it works. So I'm at a loss as to why it repeatedly failed before. I tried it at least 10 times before and it failed every time, no matter what folder I tried.

If it fails again, I'll let you know.

Thanks for the reply.

1 Like

@zeltak, If one of the above posts solves your problem/question as originally stated, please check the "Solved" checkbox (click for details) at the bottom of that post.

Otherwise, please post your remaining questions/issues about this problem.
If you have other questions, please start a new topic.

sure thing, done!

th @JMichaelTX for letting me know about this

Z

I find this AppleScript super useful, but realized that it throws an error if the finder is showing "Recents" ... probably because it's not really a real folder.

I updated the AppleScript to make it work ...

set newTarget to "Mac HD:Users:UserName:Downloads:"

tell application "Finder"
	if window 1 exists then
		tell window 1
			if (its target as string) is equal to "" then --my additon to code
				set its target to newTarget
			else if (its target as alias) ≠ newTarget then --added an "else" to beginning
				set its target to newTarget
			else
				beep 2
			end if
		end tell
	end if
end tell
1 Like

Found this awhile back and it works in Catalina and Big Sur.

File item Macro (v9.2)

03)File item.kmmacros (21 KB)

Hey Markus,

Well done!

Here's a new and improved version of my script above.

-Chris

--------------------------------------------------------
# Auth: Christopher Stone <scriptmeister@thestoneforge.com>
# dCre: 2019/01/09 16:27
# dMod: 2021/01/25 14:18
# Appl: Finder
# Task: Change the Target of the Front Finder Window (Improved).
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Finder, @Change, @Target, @Front, @Window
# Vers: 2.0
--------------------------------------------------------

# Never use a hard-coded path unless you have to.
# They're fragile and break when you least want them to.

set newTargetAlias to path to downloads folder as text

tell application "Finder"
   
   if exists of window 1 then
      
      tell window 1
         
         set windowTargetPathHFS to its target as text
         
         if (windowTargetPathHFS = "") or (windowTargetPathHFS ≠ newTargetAlias as text) then
            set its target to newTargetAlias as alias
         else
            display notification linefeed & (newTargetAlias as text) & linefeed ¬
               with title "Front Window Location already set to:" sound name "Tink"
         end if
         
      end tell
      
   else
      
      set newFinderWindow to make new Finder window
      tell newFinderWindow
         set its target to newTargetAlias
         set its bounds to {488, 23, 1432, 1196}
         if toolbar visible = false then set toolbar visible to true
      end tell
      
   end if
   
end tell

--------------------------------------------------------

Hey Bern,

Unfortunately that's pretty poor AppleScript. There's unused and unnecessary code.

Here it is all cleaned up:

--------------------------------------------------------
# Auth: Christopher Stone
# dCre: 2021/01/25 14:26
# dMod: 2021/01/25 23:27
# Appl: Finder
# Task: Move Selected Items in the Finder to a Folder Chosen by the User.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @Finder, @Move, @Selected, @Items
--------------------------------------------------------

tell application "Finder"
   set selectedItemList to the selection as alias list
   set destFolder to choose folder
   move selectedItemList to destFolder
end tell

--------------------------------------------------------

-Chris

Hey Chris,

It's funny in that I have gone through probably at least six different versions of different scripts to do just this file selected Finder thing. There are several scattered around this forum. Most of them are way longer than this version that I found, and I was quite proud for having found it.

Now you come along and turn it into Applescript Haiku. And it works even faster than the version I had. Amazing, Artistry, Thank You!

@BernSh, I am surprised that you did not find a very simple KM Macro to do this, that does NOT require any scripting.
I think it should be just as fast as Chris' script, but let us know how it works for you.

Below is just an example written in response to your request. You will need to use as an example and/or change to meet your workflow automation needs.

Please let us know if it meets your needs.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

MACRO:   Move Files in Finder Selection to Chosen Folder [Example]

-~~~ VER: 1.0    2021-01-25 ~~~
Requires: KM 8.2.4+   macOS 10.11 (El Capitan)+
(Macro was written & tested using KM 9.0+ on macOS 10.14.5 (Mojave))

DOWNLOAD Macro File:

Move Files in Finder Selection to Chosen Folder [Example].kmmacros
Note: This Macro was uploaded in a DISABLED state. You must enable before it can be triggered.


ReleaseNotes

Author.@JMichaelTX

PURPOSE:

  • Move Files in Finder Selection to Chosen Folder [Example]

NOTICE: This macro/script is just an Example

  • It is provided only for educational purposes, and may not be suitable for any specific purpose.
  • It has had very limited testing.
  • You need to test further before using in a production environment.
  • It does not have extensive error checking/handling.
  • It may not be complete. It is provided as an example to show you one approach to solving a problem.

REQUIRES:

  1. KM 8.0.2+
  • But it can be written in KM 7.3.1+
  • It is KM8 specific just because some of the Actions have changed to make things simpler, but equivalent Actions are available in KM 7.3.1.
    .
  1. macOS 10.11.6 (El Capitan)
  • KM 8 Requires Yosemite or later, so this macro will probably run on Yosemite, but I make no guarantees. :wink:

MACRO SETUP

  • Carefully review the Release Notes and the Macro Actions
    • Make sure you understand what the Macro will do.
    • You are responsible for running the Macro, not me. :wink:
      .
  • Assign a Trigger to this maro.
  • Move this macro to a Macro Group that is only Active when you need this Macro.
  • ENABLE this Macro.

USE AT YOUR OWN RISK

  • While I have given this limited testing, and to the best of my knowledge it will do no harm, I cannot guarantee it.
  • If you have any doubts or questions:
    • Ask first
    • Turn on the KM Debugger from the KM Status Menu, and step through the macro, making sure you understand what it is doing with each Action.

It's interesting. Yours opens a dialog a bit faster than the AS Chris wrote and is MUCH slower to execute the the actual move which is very fast using the AS.

Also, the AS opens a dialog with an add folder button present and I know you could modify your macro to provide the same.

Good stuff and thank you for providing it and all the structure around it!

Relatedly, I've come across several takes on filing actions. It seems that Filing/Moving files could be a section or topic onto itself within the Forum and might serve as an initial way of organizing Forum materials to present an inroad for learning KM. A bit of continuing Making KM More Accessible for Non-Geeks - #43 by peternlewis

Following are only some pieces that could be included in this topic. This is just a sketch from a beginner's view of this idea and is undoubtedly off in many ways, including putting in this article. :wink:

Getting Started

Straight filing files~

Variations while Moving files~

Parts involved with Moving Files~

Pathways-

The Clipboard-

Dialogs-

Making Folders-

Links-

I can confirm and quantify your results with my testing of moving 14 files:

image

image

Here is my test AppleScript:

use scripting additions
use framework "Foundation"


tell application "Finder"
  set selectedItemList to the selection as alias list
  set destFolder to choose folder
  
  set gTimerStartDate to current application's NSDate's |date|()
  
  move selectedItemList to destFolder
  
  set elapTime to (round (-(gTimerStartDate's timeIntervalSinceNow())) * 1000) / 1000.0
  
end tell

return elapTime

It's cool to get to hang out with people who know what they're doing!

Thank you for always moving the ball forward!!

2 Likes