2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« 「名前を付けて画像を保存」するコンテキストメニュー拡張(その2) | トップページ | バッチファイルで複数のPDFファイルを連続印刷する。 »

2009年6月11日 (木)

260文字以上の長いパス名を短いパス名に変える。

例えば、fso.GetFile("長いパス名").ShortPath で簡単に短いパス名に変えられそうですが、fso.GetFile("260文字以上の長いパス名").ShortPath はエラーになって使えません。
そこで、ディレクトリ階層を上に遡って、上から順に短くして行きます。

Set fso=CreateObject("Scripting.FileSystemObject")

MsgBox GetShortPathName("長~いパス名")

Function GetShortPathName(Path)
GetShortPathName=Path
If Len(Path)>259 Then
  GetShortPathName=fso.BuildPath(GetShortPathName(fso.GetParentFolderName(Path)),fso.GetFileName(Path))
  If Len(GetShortPathName)>259 Then Exit Function
End If
If fso.FileExists(GetShortPathName) Then
  GetShortPathName=fso.GetFile(GetShortPathName).ShortPath
Else
  GetShortPathName=fso.GetFolder(GetShortPathName).ShortPath
End If
End Function

« 「名前を付けて画像を保存」するコンテキストメニュー拡張(その2) | トップページ | バッチファイルで複数のPDFファイルを連続印刷する。 »