2017年11月
      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    
無料ブログはココログ

« WSHのドロップハンドラは、ファイル名にシフトJIS以外の文字を通さない。(障害) | トップページ | ECHOなどの内部コマンドの区切り文字は、=;,を使うべし。:\./+[]は使わないこと。 »

2008年10月31日 (金)

MHTMLファイルの名前の中の#!を全角に、シフトJIS以外の文字を{16進}に変える。

WSHのドロップハンドラが使えないので、VB.NETで作ります。

MhtFileName.exe ファイル...

vbc MhtFileName.VB

Imports System.IO

Public Class Class1
Public Shared Sub Main(Args() As String)
For Each Arg As String In Args
  Dim fi = New FileInfo(Arg)
  Dim xName As String = xString(fi.Name)
  If xName<>fi.Name Then fi.MoveTo(Arg + "\..\" + xName)
Next
End Sub

Private Shared Function xString(ByVal s As String) As String
Dim x As String = ""
For k As Integer = 1 To Len(s)
  Dim c = Mid(s, k, 1)
  If 31 < AscW(c) AndAlso AscW(c) < 128 Then
  ElseIf &Hff60 < AscW(c) And AscW(c) < &Hffa0 Then
  ElseIf Chr(Asc(c)) = c And Asc(c) < 0 Then
  Else
    c = Hex(AscW(c))
    c = "{" & New String("0"c, Len(c) Mod 2) & c & "}"
  End If
  x = x & c
Next
x = Replace(x, "#", "#")
x = Replace(x, "!", "!")
Return x
End Function
End Class

« WSHのドロップハンドラは、ファイル名にシフトJIS以外の文字を通さない。(障害) | トップページ | ECHOなどの内部コマンドの区切り文字は、=;,を使うべし。:\./+[]は使わないこと。 »