Curious.
I tried the original script on my 10.9.5 system, and it worked.
This works too (in both directions):
tell application "Finder"
set targetFolder to insertion location as alias
set name extension of files of targetFolder whose name extension is "txt" to "dat"
set name extension of files of targetFolder whose name extension is "dat" to "txt"
end tell
And this works:
set thePath to path to desktop
set ext to "dat"
set extNew to "csv"
# set ext to "csv"
# set extNew to "dat"
tell application "Finder" to set name extension of (files of thePath whose name extension is ext) to extNew
This works:
set originalNameExtension to "dat"
set newNameExtension to "csv"
tell application "Finder"
set targetFolder to insertion location as alias
set fileList to (files of targetFolder whose name extension is originalNameExtension) as alias list
repeat with i in fileList
set name extension of i to newNameExtension
end repeat
end tell
The method I’m most likely to employ personally uses the Satimage.osax for regular expression support and file globbing.
It’s very fast, and regular expressions make renaming very flexible.
set originalNameExtension to "csv"
set newNameExtension to "dat"
tell application "Finder" to set targetFolder to insertion location as alias
set fileList to glob ("*" & originalNameExtension) from targetFolder as alias
if fileList ≠{} then
set AppleScript's text item delimiters to return
copy fileList as text to nameList
set nameList to paragraphs of (change "^.+:(.+\\.)" & originalNameExtension into "\\1" & newNameExtension in nameList with regexp without case sensitive)
set _cntr to 0
tell application "Finder"
repeat with i in fileList
set _cntr to _cntr + 1
set name of i to item _cntr of nameList
end repeat
end tell
end if
Then we have the old school method using Bash (shell script not AppleScript):
#! /usr/bin/env bash
cd ~/"test_directory/files-25-dat copy";
old=dat;
new=csv;
for file in *."$old"
do
mv "$file" "${file%.$old}.$new";
done
Run directly from FastScripts it’s very quick.
- Note the directory is my test directory and not the desktop.
Ordinarily I dislike hard-coding locations for scripts and prefer to work with the insertion location which will target the front window or the desktop if no windows are open.
#! /usr/bin/env bash
old=dat;
new=csv;
read -r -d '' aplScpt <<'EOF'
try
tell application "Finder" to set targetDir to insertion location as alias
return POSIX path of targetDir
on error
return "false"
end try
EOF
DIR=$(osascript -e "$aplScpt");
if [ ! "$DIR" = "false" ]; then
cd "$DIR";
for file in *."$old"
do
mv "$file" "${file%.$old}.$new";
done
fi
This again is straight-up Bash not AppleScript, although it contains some AppleScript.
Once again I’m running directly from FastScripts.
We haven’t solved the reason why your original script stopped working. If you figure that out please let us know.
In any case you now have a solid range of alternatives.