• ベストアンサー

VBScriptについて

VBScriptでファイル名を取得して、そのファイル名(英数字)を元に文字を表示させたい。 またファイル名に使用されている文字が[1]なら[^]、[2]なら[(]、[3]なら[a]というふうに、決められた文字を反映させたい場合は、どういう作り方をすればいいのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

こんにちは。 こちらの理解が至りませんでしたので、 直感的な解釈を基にして仮の設定で例を示してお応えします。 それでも必要なパーツの内の幾つかは提示できているのではないでしょうか。 お応えするスクリプトは、 > VBScriptでファイル名を取得して   (スクリプトを記載した.vbs)ファイルの置かれているディレクトリ   にあるファイル(自らのファイルを含む)すべて   のファイル名を(改行された文字列として)取得して > そのファイル名(英数字)を元に文字を表示させたい。 > またファイル名に使用されている文字が[1]なら[^]、[2]なら[(]、[3]なら[a]というふうに、 > 決められた文字を反映させたい   ファイル名に含まれる特定の文字を対応した文字列に置換する というような、ひとつの解釈、に基いた処理内容です。 (暗号or複合化、みたいなものを想定しています) まずは実行結果を確認してみてください。 その上で、 お求めの結果とは異なっているとして、 提示したパーツだけでは応用が難しい、ということでしたら、   求める結果とどう違うのか、   質問文の説明がどのように誤解されているのか、 ということに注目して、お望みの処理の内容について 補足説明をしてみてください。 ・どの?どこの?(または何を基準に?)ファイル名を取得するのか、 ・どこに?どのような?文字を表示させたい/文字を反映させたい のか、お求めの結果が確認し易いような具体例を添えることが可能でしたら、 より適切な回答に繋げることができるだろうと思っています。 ' ' /// 8984446w /// vbs Option Explicit Dim aryPlain aryPlain = Array("1", "2", "3") Dim aryCipher aryCipher = Array("^", "(", "a") Dim NEWLINE NEWLINE = vbCrLf Call test Sub test() If UBound(aryPlain) <> UBound(aryCipher) Then MsgBox "対照テーブル:件数の不一致",48 Exit Sub End If Dim oWshShell On Error Resume Next Set oWshShell = CreateObject("WScript.Shell") If Err Then Exit Sub On Error GoTo 0 Dim sDir sDir = oWshShell.CurrentDirectory Set oWshShell = Nothing Dim buf Dim oFSO Dim oFile Set oFSO = CreateObject("Scripting.FileSystemObject") For Each oFile In oFSO.GetFolder(sDir).Files buf = buf & NEWLINE & oFile.Name Next Set oFSO = Nothing buf = Mid(buf, Len(NEWLINE) + 1) Dim i For i = LBound(aryPlain) To UBound(aryPlain) If InStr(buf, aryPlain(i)) Then buf = Replace(buf, aryPlain(i), aryCipher(i)) End If Next buf = Mid(buf, 2) WScript.Echo buf End Sub ' ' ///

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

質問の内容が珍奇で、なぜこんな処理をするのかわからない。 私の常識では補って理解できない。 ーー 下記の点を補足記述したほうがよいのでは。 (1)問題にしているフォルダは1つで、それ指定して、そのフォルダ内のファイル名(文字列)をすべて取得し、エクセルシートにでも表示するのか。質問するなら丁寧に書くこと。 もしこれならWEBで照会すれば、コードの載っている記事がたくさんあるよ。 質問をここにするまでもない課題。 Googleででも、「vba フォルダ ファイル名一覧」などで照会し勉強(マネに「近い)すること。 ーー そしてそのファイル名の文字列について、対応ルール(質問では[1]なら[^]、[2]なら[(]、[3]なら[a]など) に「変換する」(置換する)ということとか。なぜこんなことするのかな。 1ファイル名でXXX12なんてあるのか。 ファイル名の全体でなく、最後の部分が数字で、その部分限定の数字(1桁?)に限って置換するのでは? 小生が推定でそう思っただけだが。 数字は最後の1桁だけとかに出るだけではないのか。 ーー 質問者の見ていること・思っていることは、文章にしないと、読者には伝わらない・回答できない、ことを、よく知っておいて。

関連するQ&A