電子書籍の厳選無料作品が豊富!

このようなツールをご存知の方はいらっしゃらないでしょうか。
(1)ファイルを指定する。
(2)フォルダを指定する
(3)(2)を検索して(1)と同じファイル名のものをすべて上書きする。

ご存知の方は教えてくだされば幸いです。

A 回答 (1件)

希望どおりのツールは聞いたことがないのですが、VBScript でなら似たような物は何度も作ったことがあります。


汎用性を持たせるために HTA アプリケーション化してみました。
下記ソースをテキストファイルとして保存し、拡張子を HTA にしてください。
VBScript ではなく JavaScript や jQuery を使っていますが、単なる遊び心であり、完成度については全く自身がありませんが。

<!DOCTYPE html>
<html>
<head>
  <title>ファイル上書き</title>

  <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.1 …
  <script type="text/javascript">
    window.resizeTo(750, 500);

    // フォルダーのパスを選択
    function SetRootDir() {
      var shell = new ActiveXObject("Shell.Application");
      var fld = shell.BrowseForFolder(0, "フォルダー選択", 1);
      if (fld == null) {
        return;
      }
      $("#rootDir").val(fld.self.path);
    }
    
    // ジョブ実行
    function ExecuteJob() {
      var targetFilePath = $("#targetFile").val();
      var rootDirPath = $("#rootDir").val();

      $("#log").html("");
      $("#log").append("-------------------------------<br/>");

      // 指定されたファイルとフォルダーが存在していれば処理を開始する
      var fso = new ActiveXObject("Scripting.FilesystemObject");
      if (fso.FileExists(targetFilePath) && fso.FolderExists(rootDirPath)) {
        ReplaceFiles(rootDirPath, targetFilePath);
      }
      $("#log").append("-------------------------------<br/>");
    }
    
    // aRootDir : ディレクトリのパス
    // aTargetFile : コピー元ファイルのパス
    function ReplaceFiles(aRootDir, aTargetFile) {
      var fso = new ActiveXObject("Scripting.FileSystemObject");
      
      // フォルダーを掘る
      var subFlds = new Enumerator(fso.GetFolder(aRootDir).SubFolders);
      for (; !subFlds.atEnd() ; subFlds.moveNext()) {
        var subFld = subFlds.item();
        ReplaceFiles(subFld.path, aTargetFile);
      }
      // ファイルを掘る
      var fls = new Enumerator(fso.GetFolder(aRootDir).Files);
      for (; !fls.atEnd() ; fls.moveNext()) {
        // 取り出したファイルがコピー元ファイルと同じ名前ならファイルを置換し、
        // 本文の #log div に結果を記録する
        if (fls.item().name.toLowerCase() == fso.GetFileName(aTargetFile).toLowerCase()) {
          fso.CopyFile(aTargetFile, fls.item().path, true);
          $("#log").append(fls.item().path + "<br />");
        }
      }
    }
  </script>
</head>
<body>
  <div>
    ファイル名 : <input type="file" id="targetFile" value="" style="width: 400px;" />
    <br />
    対象フォルダー : <input type="text" id="rootDir" value="" style="width: 400px;" />
    <input type="button" id="dirSetButton" value="フォルダー選択" onclick="SetRootDir()" />
    <br /><br />
    <input type="button" id="executeButton" value="上書き実行" onclick="ExecuteJob()" />
  </div>
  <!-- 結果をここに出力する -->
  <div id="log">
  </div>
</body>
</html>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!