人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

■複数階層にあるtxtファイルを任意のフォルダにまとめてコピーしたい。

Windowsのコマンドプロンプト(バッチ処理?)で上記のようなコマンドは可能でしょうか?

例えば、添付画像のような構成のディレクトリで、dataフォルダの中身のサブディレクトリも含めた中にあるtxtファイルを任意のディレクトリ[data2]にコピーしたいです。

その際、txtファイルが重複しても大丈夫なように、「そこまでのパス + ファイル名」とリネームもしたいです。

このような事を実現する、バッチコマンドを教えてください。

宜しくお願いいたします。

1313471419
●拡大する


●質問者: ruijio
●カテゴリ:コンピュータ インターネット
✍キーワード:txt Windows コピー コマンド コマンドプロンプト
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● km1981
●300ポイント ベストアンサー

バッチ処理だけでは難しいところがあるので

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というのは初めて使ってみましたが、無事に出来ました!

とても助かりました。ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ