• 締切済み

同じファイル名のデータを上書き

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

みんなの回答

  • x-1919
  • ベストアンサー率52% (91/173)
回答No.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.11.0.min.js"></script>   <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>

関連するQ&A