File Name

ファイル名フォルダ名非互換文字置換(考え中)


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003# ファイル名フォルダ名非互換文字置換
004(*
005メモアプリのnameに対応する用に作成
006スペースがラインセパレーターになっている値を
007ファイル名として使いたい場合の処理を考え中
008キャラクターID=ユニコード番号の10進数で判定して置換する方法
009制御文字は削除して
010それ以外は全角文字=2バイトの日本語の記号文字に置換する方法も検討中
011*)
012# com.cocolog-nifty.quicktimer.icefloe
013----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
014use AppleScript version "2.8"
015use framework "Foundation"
016use framework "AppKit"
017use scripting additions
018property refMe : a reference to current application
019
020(*
021set strFileName to "A:A\nA¥A"
022の場合
023set strFileName to doReplace(strFileName, "_")
024
025log strFileName
026-->"A_AA_A" となる
027*)
028log doReplace("A:A\nA¥A", "_")
029
030
031
032################################
033# 非互換文字置換
034to doReplace(argOrignalText, argReplaceText)
035  #戻し用のリスト
036  set listReturnText to {} as list
037  #入力をテキストで確定させて
038  set strOrignalText to argOrignalText as text
039  #文字毎でリストにする
040  set listOrignalText to (every text item of strOrignalText) as list
041  ################################
042  #まずは制御文字の削除
043  #文字数分繰り返し
044  repeat with itemOrignalText in listOrignalText
045    #10進ユニコード番号を取得して
046    set strItemCharNO to id of itemOrignalText
047    #濁音等の合成文字は処理しない
048    if (class of strItemCharNO) = integer then
049      #31より小さい数なら制御文字
050      if strItemCharNO ≤ 31 then
051        #10進ユニコード番号31までは制御文字なので削除
052        #なので何もしない
053      else
054        #それ以外の文字は次工程に回す
055        set end of listReturnText to itemOrignalText
056      end if
057      # 合成文字の場合Classがlistになる
058    else if (class of strItemCharNO) = list then
059      #そのまま次工程に回す
060      set end of listReturnText to itemOrignalText
061    end if
062  end repeat
063  
064  
065  ################################
066  #次に指定番号で指定文字に置換
067  #ファイル名パス名のWindow Mac非互換文字と非推奨文字の一部のユニコード10進数値
068  # set listCharNoDec to {34, 37, 42, 47, 58, 60, 62, 63, 92, 94, 124, 126, 127, 160, 165, 8203, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239} as list
069  set listCharNoDec to {34, 37, 42, 47, 58, 60, 62, 63, 92, 94, 124, 126, 127, 160, 165} as list
070  #戻し用のリスト
071  set listSubReturn to {} as list
072  #順番に処理
073  repeat with itemChar in listReturnText
074    #10進ユニコード番号を取得して
075    set strItemCharNO to id of itemChar
076    if listCharNoDec contains strItemCharNO then
077      set end of listSubReturn to argReplaceText
078    else
079      #置換せずにそのまま
080      set end of listSubReturn to itemChar
081    end if
082  end repeat
083  
084  ################################
085  #スペースに置換
086  #ラインセパレータ等特殊文字はスペースに置換する
087  set listCharNoDec to {8203, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239} as list
088  #戻し用のリスト
089  set strReturn to ("") as text
090  #順番に処理
091  repeat with itemChar in listSubReturn
092    #10進ユニコード番号を取得して
093    set strItemCharNO to id of itemChar
094    if listCharNoDec contains strItemCharNO then
095      #含まれているならスペース置換
096      #スペース以外の文字に置換する場合はここで変更
097      set strReturn to (strReturn & " ") as text
098    else
099      #置換せずにそのまま
100      set strReturn to (strReturn & itemChar) as text
101    end if
102  end repeat
103  
104  #戻す
105  return strReturn
106end doReplace
107
AppleScriptで生成しました

|

WIndows非互換文字置換


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# ファイル名に非推奨とされる文字をアンダーバーに置換する
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010property refMe : a reference to current application
011
012
013log doSafeFileName("\\")
014log doSafeFileName(":")
015
016##############################
017# 互換ファイル名に置換
018##############################
019to doSafeFileName(argFileName)
020  #テキストかOCIDかわからないので一度テキストにして
021  set strFileName to argFileName as text
022  #その後でNSStringにする
023  set ocidReplacedStrings to (refMe's NSString's stringWithString:(strFileName))
024  #置換テーブル
025  set recordUnsupported to {|\\|:"_", |/|:"_", ||:":", _:"", |*|:"_", |?|:"_", |"|:"_", |<|:"_", |>|:"_"} as record
026  set ocidUnsupportedDict to refMe's NSDictionary's dictionaryWithDictionary:(recordUnsupported)
027  set ocidAllkey to ocidUnsupportedDict's allKeys()
028  set numCntArray to ocidAllkey's |count|()
029  #キーの数だけ繰り返し
030  repeat with itemNo from 0 to (numCntArray - 1) by 1
031    #キーの取得
032    set ocidKey to (ocidAllkey's objectAtIndex:(itemNo))
033    #置換デーブルの値を取得
034    set ocidValue to (ocidUnsupportedDict's valueForKey:(ocidKey))
035    #文字列置換
036    set ocidReplacedStrings to (ocidReplacedStrings's stringByReplacingOccurrencesOfString:(ocidKey) withString:(ocidValue))
037  end repeat
038  #OCIDで戻す場合
039  # return ocidReplacedStrings
040  #テキストで戻す場合
041  return ocidReplacedStrings as text
042  
043end doSafeFileName
044
045
046return
AppleScriptで生成しました

|

Windowsの予約語の置換


AppleScript サンプルコード

【スクリプトエディタで開く】 |

AppleScript サンプルソース(参考)
行番号ソース
001#!/usr/bin/env osascript
002----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
003#
004# ファイル名がWindowsの予約語だった場合アンダーバーを付与する
005#com.cocolog-nifty.quicktimer.icefloe
006----+----1----+----2----+-----3----+----4----+----5----+----6----+----7
007use AppleScript version "2.8"
008use framework "Foundation"
009use scripting additions
010property refMe : a reference to current application
011
012
013log doReservedFileName("COM3")
014log doReservedFileName("LPT8")
015
016##############################
017# 予約語置換
018##############################
019to doReservedFileName(argFileName)
020  #テキストかOCIDかわからないので一度テキストにして
021  set strFileName to argFileName as text
022  #置換テーブル
023  set listReserved to {"COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8", "COM9", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9", "CON", "PRN", "AUX", "NUL"} as list
024  set numCntArray to (count of every item of listReserved) as integer
025  #キーの数だけ繰り返し
026  repeat with itemNo from 1 to numCntArray by 1
027    #キーの取得
028    set strKey to (item itemNo of listReserved)
029    #置換デーブルの値を取得
030    set strValue to ("_" & strKey) as text
031    #文字列置換
032    if strFileName is strKey then
033      set strFileName to strValue as text
034    end if
035  end repeat
036  #OCIDで戻す場合
037  # return ocidReplacedStrings
038  #テキストで戻す場合
039  return strFileName as text
040  
041end doReservedFileName
042
043
044return
AppleScriptで生成しました

|

その他のカテゴリー

Accessibility Acrobat Acrobat 2020 Acrobat AddOn Acrobat Annotation Acrobat ARMDC Acrobat AV2 Acrobat BookMark Acrobat Classic Acrobat DC Acrobat Dialog Acrobat Distiller Acrobat Form Acrobat JS Acrobat Manifest Acrobat Menu Acrobat Open Acrobat Plugin Acrobat Preferences Acrobat Preflight Acrobat Python Acrobat Reader Acrobat Reader Localized Acrobat Reference Acrobat SCA Acrobat SCA Updater Acrobat Sequ Acrobat Sign Acrobat Stamps Acrobat Watermark Acrobat Windows Acrobat Windows Reader Admin Admin Account Admin Apachectl Admin configCode Admin Device Management Admin LaunchServices Admin Locationd Admin loginitem Admin Maintenance Admin Mobileconfig Admin Permission Admin Pkg Admin Power Management Admin Printer Admin SetUp Admin SMB Admin Support Admin System Information Admin Tools Admin Users Admin Volumes Admin XProtect Adobe Adobe Bridge Adobe FDKO Adobe Fonts Adobe Reference Adobe RemoteUpdateManager AppKit Apple AppleScript AppleScript do shell script AppleScript List AppleScript ObjC AppleScript Osax AppleScript PDF AppleScript Pictures AppleScript record AppleScript Script Editor AppleScript Script Menu AppleScript Shortcuts AppleScript Shortcuts Events AppleScript System Events AppleScript System Events Plist AppleScript Video Applications AppStore Archive Attributes Automator BackUp Barcode Barcode Decode Barcode QR Bash Basic Basic Path Bluetooth BOX Browser Calendar CD/DVD Choose Chrome CIImage CityCode CloudStorage Color com.apple.LaunchServices.OpenWith Console Contacts CotEditor CURL current application Date&Time defaults delimiters Desktop Device Diff Disk Dock DropBox Droplet eMail Encode % Encode Decode Encode HTML Entity Encode UTF8 Error EXIFData ffmpeg File File Name Finder Firefox Folder FolderAction Fonts Fonts ATS Fonts Python Foxit GIF github Guide HTML Icon Illustrator Image Events Image2PDF ImageOptim Input Dictionary iPhone iWork Javascript Jedit Json Label Language Leading Zero List locationd LRC lsappinfo m3u8 Mail MakePDF Map Math Media Media AVAsset Media AVconvert Media AVFoundation Media AVURLAsset Media Movie Media Music Memo Messages Microsoft Microsoft Edge Microsoft Excel Microsoft Fonts Microsoft Office Mouse Music NetWork Notes NSArray NSArray Sort NSBezierPath NSBitmapImageRep NSBundle NSCFBoolean NSCharacterSet NSColor NSColorList NSData NSDecimalNumber NSDictionary NSError NSEvent NSFileAttributes NSFileManager NSFileManager enumeratorAtURL NSFont NSFontManager NSGraphicsContext NSImage NSIndex NSKeyedArchiver NSKeyedUnarchiver NSLocale NSMetadataItem NSMutableArray NSMutableDictionary NSMutableString NSNotFound NSNumber NSOpenPanel NSPasteboard NSpoint NSPredicate NSRange NSRect NSRegularExpression NSRunningApplication NSScreen NSSize NSString NSString stringByApplyingTransform NSStringCompareOptions NSTask NSTimeZone NSURL NSURL File NSURLBookmark NSURLComponents NSURLResourceKey NSURLSession NSUserDefaults NSUUID NSView NSWorkspace Numbers OAuth OneDrive PDF PDF Pymupdf PDFAnnotation PDFAnnotationWidget PDFContext PDFDisplayBox PDFDocumentPermissions PDFImageRep PDFKit PDFnUP PDFOutline PDFView perl Photoshop PlistBuddy pluginkit plutil postalcode PostScript prefPane Preview Python QuickLook QuickTime ReadMe Regular Expression Reminders ReName Repeat RTF Safari SaveFile ScreenCapture ScreenSaver SF Symbols character id SF Symbols Entity sips Skype Slack Sound Spotlight sqlite SRT StandardAdditions Swift System Settings TCC TemporaryItems Terminal Text Text CSV Text MD Text TSV TextEdit Tools Translate Trash Twitter Typography UI Unit Conversion UTType valueForKeyPath Video VisionKit Visual Studio Code VMware Fusion Wacom webarchive webp Wifi Windows XML XML EPUB XML HTML XML LSSharedFileList XML OPML XML Plist XML RSS XML savedSearch XML SVG XML TTML XML webloc XML xmllint XML XMP YouTube zoom