2017-12-04 15 views
0

このvbscriptの出力テキストファイルをUnicodeではなくANSIとして保存しようとしています。vsscript出力をansiエラーとして保存する

これは簡略化されたスクリプトです:私が変更した場合は

Option Explicit 

dim fso, obs, fol, spl, files, objFile, arr, file, ext, ex 
Set fso = CreateObject("scripting.filesystemobject") 
Set obs = CreateObject("shell.application") 
Set fol = fso.GetFolder(".") 
Set spl = obs.NameSpace(fol.Path) 
Set files = fol.Files 
set objFile = fso.openTextFile("test.txt" ,2 , true, false) 
arr = Array("mp4") 

For Each file In files 
    ext = fso.GetExtensionName(file.Name) 
    For Each ex In arr 
     If StrComp(ext,ex,1)=0 Then 
      objFile.writeline fol.Path & "\" & spl.GetDetailsOf(spl.ParseName(file.Name),0) & vbcrlf & spl.GetDetailsOf(spl.ParseName(file.Name),27) & vbcrlf & spl.GetDetailsOf(spl.ParseName(file.Name),28) 
     End If   
    Next 
Next 
objFile.Close 

set objFile = fso.openTextFile("test.txt" ,2 , true, false) 

へ:

set objFile = fso.openTextFile("test.txt" ,2 , true, true) 

スクリプトは動作しますが、Unicodeとして出力を保存します。私がfalseを保持すると、スクリプトは私に無効なプロシージャコールまたは引数を与えます。 これは、エラーの原因となっている部分である。

spl.GetDetailsOf(spl.ParseName(file.Name),28) 

は、私は他の拡張プロパティの負荷を試してみましたが、それらはすべてANSIとして正常に動作。それは私に問題を与えているこのようなものです。私は別のファイルの負荷を試して、結果は同じです。私はこれを残念ながら修正するのに十分ではないので、私はどんな助けでも非常に喜ばれるでしょう。

+0

書いている(WriteLine)の詳細(GetDetailsOf)にUnicode値が含まれていませんか? –

+0

私はWindows以外ではうまくいきませんでした。(28)Windows 7ではBit Rateです。私がUnicodeで得た結果は、例として191kbpsです。出力ファイルをANSIに手動で変更すると、Unicode文字が含まれています。出力ファイルからビットレートラインを削除しようとしましたが、それでも同じことが言います。私は今数時間試しています。私は他に何を試していいのかわかりません。 –

答えて

1

問題の考えられる原因は、hereです。 28 /ビットレートの詳細/プロパティには、Left-To-Right-Markが含まれている場合があります。対処方法は、.WriteLine Mid(spl.GetDetailsOf(spl.ParseName(file.Name)、28)、2)をファイルに適用することです。

もちろん、他のデータにANSI以外の文字が含まれている場合は、それに応じてサニタイズする必要があります。

+0

うわー。ありがとう、非常に、私はそれを考え出したとは思わない。 –

関連する問題