• ベストアンサー

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/17068)
回答No.1

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBScriptで特別な意味を持つ記号を使う方法

    VBScriptで簡単なツールをつくっているのですが、「"」のような特殊な働きを持つ文字を文字列として使用するにはどうすればいいでしょうか? 例えば、MsgBoxなどで、「"ファイル名"があります」という表示をさせたい場合、 MsgBox ""ファイル名"があります" という使い方はできません。 Perlなどでは「'」でくくるなどの方法がありますが、VBScriptでも何か対処する方法はありませんでしょうか? よろしくお願いいたします。

  • VBScript

    VBScriptを使って文字表示を整えるにはどうしたらいいでしょうか? 例えば WScript.StdOut.WriteLine "変数1" & ":" & "変数2" のような場合だと 繰り返し表示したときに、変数の大きさによって表示がずれてしまいます。 ・ずれた例 aaa:bbb a:b ・整える例 aaa:bbb a :b こんな感じにしたいです。

  • VBScriptで数値にコンマを付けたいです

    123456789 → 123,456,789 のような風に。 VBScriptで取得した数値にコンマを付けたいです。 検索してもいまいちヒットしなかったので ひょっとしてVBScriptでは出来ないのでしょうか? その場合は「出来ない」という事実だけでも教えてくだされば助かります。

  • VBScriptで困ってます(>_<)

    VBScriptを使って、クイズ的なものを作成しているのですが、 打ち込んだクイズをランダムに表示させられないかと考えました ですが、どのような文字列を打ち込んだら良いか分かりません… 一応、こんな感じで作成しています。 moji = inputbox("クイズの内容","タイトル") if (moji = "ここには正解を") then msgbox("当たっていた場合の表示") else msgbox(moji = "外れていた場合の表示") end if 以下二問目~ という風に作成しています どこにどのようにどのような文字列を打ち込めばよいか(ToT)/~~~ どなたか知恵をお貸しください…

  • VBScriptかJavaScriptについての質問です。

    初心者名質問で申し訳ないです。 今現在、拡張子を「.hta」にして、 基本的にVBSでスクリプトを組んでいます。 現在「親.hta」ファイルから「子.hta」ファイルを呼び出す スクリプトを作っています。 で、「子.hta」ファイルが存在するフォルダの名前を 「子.hta」ファイルに表示させたいのです。 方法がよく分からなかったため、現在「子.hta」では、 VBSで自分のフォルダ名を「変数A」に取得して、 JavaScriptで「変数A」を表示させる方法をとっています。 しかし、この方法では表示されるフォルダ名が、 なぜか「子.hta」のフォルダ名ではなく、 「親.hta」のフォルダ名になってしまっています。。 フォルダを取得した時点で、 親のフォルダを取得してしまっているのでしょうが、 子自身のフォルダ名を取得するには どうすれば良いのでしょうか。 VBScript、JavaScriptどちらの方法でも良いので、 教えていただければ幸いです。

  • VBScriptでフォルダ内の全ファイル名取得

    こんにちは VBScriptでツールを作成しています。 フォルダA内の全ファイルをリネームして 別フォルダB内に同じファイル名があればリネームして フォルダA内のファイルをコピーしたいのですが 一度にフォルダ内の全ファイル名を取得する方法が分かりません。 なにかいい方法は無いでしょうか?よろしくお願いします。

  • VBscriptからバッチに変数を渡すには?

    VBscriptからバッチに文字列を渡したいのですが、どう書いたらいいでしょうか? VBscriptにWscript.Quit 1と数字を入れた場合、バッチ側は%errorlevel%で取得できると思うのですが、文字列は出来ませんでした。 よろしくお願いします。

  • VBScript フォント名出力

    仕事で預かったフォントが、Dドライブの「Fonts」フォルダにあります。 このフォントのファイル名一覧は、VBScriptで簡単に作れました(テキストファイルに出力)。 しかし、ファイル名では、どんなフォントか分からないので、「フォント名」(「MS 明朝」など)も同時に出力したいのですが、フォント名の取得の仕方が分かりません。 VBScriptで、「フォント名」を取得する具体的な方法、または、書かれているサイトをご存じの方がおられましたら、お教えください。 それなりにサイトを調べたつもりなのですが、分かりませんでした。 よろしくお願いします。

  • VBScriptで自身のファイル名を取得する方法

    VBScriptでは、GetAbsolutePathName()のように、ファイル名を代入しないと自身のファイル名が分からないと思うのですが、ファイル名が分からないときに自身のファイル名を取得する方法はないでしょうか。よろしくお願いします。

  • VBScriptでキーボード操作

    VBScriptを使用して、Windowロゴキー+R(ファイル名を指定して実行を開く)を行うことは可能でしょうか? また、開いたところにファイル名を入力し、実行させることはできるでしょうか?