Windowsのコマンドプロンプト(バッチ処理?)で上記のようなコマンドは可能でしょうか?
例えば、添付画像のような構成のディレクトリで、dataフォルダの中身のサブディレクトリも含めた中にあるtxtファイルを任意のディレクトリ[data2]にコピーしたいです。
その際、txtファイルが重複しても大丈夫なように、「そこまでのパス + ファイル名」とリネームもしたいです。
このような事を実現する、バッチコマンドを教えてください。
宜しくお願いいたします。
バッチ処理だけでは難しいところがあるので
WSH(VBScript)で書いてみました
このファイルを "hoge.vbs" のように拡張子 vbs で保存して
コマンドラインから実行してください
パラメータは最初の3つの変数を適当に変更してください
Option Explicit Dim Sour, Dest, Ext, Fso, Win Dim Msg Sour = "C:\data" :'コピー元フォルダ Dest = "C:\data2" :'コピー先フォルダ Ext = "txt" :'コピー対象の拡張子 Set Fso = CreateObject("Scripting.FileSystemObject") Set Win = Wscript.CreateObject("Shell.Application") '--再帰呼び出しでコピーを実行 Sub copyFiles(parent, sour, dest) Dim folder, fi, fname Set folder = Win.NameSpace(sour) For Each fi In folder.Items If fi.IsFolder Then copyFiles fi.Name, sour & "\" & fi.Name, dest ElseIf fso.GetExtensionName(fi.Name) = Ext Then '--コピー先にファイルが存在する If Fso.FileExists(Dest & "\" & fi.Name) Then fname = Dest & "\" & parent & fi.Name '--存在しない Else fname = Dest & "\" & fi.Name End If Fso.CopyFile sour & "\" & fi.Name, fname :'コピー実行 End If Next End Sub '--コピー先フォルダがなければ作成 If Fso.FolderExists(Dest) Then Else Fso.CreateFolder(Dest) End If '--コピー実行 copyFiles "", Sour, Dest
回答ありがとうございます。
VBScriptというのは初めて使ってみましたが、無事に出来ました!
とても助かりました。ありがとうございました。