No.1
- 回答日時:
bat はわからないですがVBAなら可能ではないでしょうか?
ただわざわざ移動のためにVBA(Excelなどを起動)でやるのもどうかと思いますけど。
Yahoo!知恵袋とかにはVBSをメインに回答されている方もいるようですので、そっちを使う方が楽かな?
あと移動した時にファイル名にはフォルダ名が残っていても良いのでしょうか。
No.2ベストアンサー
- 回答日時:
vbaでの実装例です。
以下のマクロを標準モジュールへ登録してください。-------------------------------------------
Option Explicit
Public Sub ファイル移動()
Const Folder As String = "d:\goo\data\goo214" 'DOC格納フォルダ
Const FORCE_REPLACE As Boolean = True '同一ファイルが存在するときの強制上書き(true=上書きする、false=上書きしない)
Dim FSO As Object 'Filesystem
Dim dicT As Object '連想配列
Dim RE As Object '正規表現
Dim dirName As String
Dim fileName As String
Dim result As Object
Dim mstr As String
Dim oldname As String
Dim newname As String
Dim count As Long
Dim atr As Integer
Set FSO = CreateObject("Scripting.FileSystemObject")
Set dicT = CreateObject("Scripting.Dictionary") ' 連想配列の定義
Set RE = CreateObject("VBScript.RegExp")
RE.Pattern = "^.*名前.*_"
RE.Global = True
dirName = Dir(Folder & "\*名前*", vbDirectory)
If dirName = "" Then
MsgBox (Folder & "内にフォルダが存在しません。")
Exit Sub
End If
'全てのフォルダを処理する
Do While dirName <> ""
'フォルダ名の記憶
If (GetAttr(Folder & "\" & dirName) And vbDirectory) <> 0 Then
dicT(dirName) = True
End If
dirName = Dir()
Loop
fileName = Dir(Folder & "\*名前*.doc", vbNormal)
If fileName = "" Then
MsgBox (Folder & "内にDOCが存在しません。")
Exit Sub
End If
'全てのファイルを処理する
count = 0
Do While fileName <> ""
Set result = RE.Execute(fileName)
If result.count > 0 Then
mstr = result(0).Value
mstr = Left(mstr, Len(mstr) - 1)
If dicT.exists(mstr) = True Then
oldname = Folder & "\" & fileName
newname = Folder & "\" & mstr & "\" & fileName
MsgBox ("<" & oldname & "><" & newname & ">") '移動前後のファイル名表示
If FSO.FileExists(newname) Then '移動先にファイルが存在するなら
If FORCE_REPLACE = True Then '同一ファイル存在時の上書き指定がtrueなら
FSO.deletefile newname '元のファイルを削除して
FSO.movefile oldname, newname '移動先に移動する
count = count + 1 '移動件数アップ
End If
Else '移動先にファイルが存在しないなら
FSO.movefile oldname, newname '移動先に移動する
count = count + 1 '移動件数アップ
End If
End If
End If
fileName = Dir()
Loop
MsgBox (count & "件のファイルを移動しました")
End Sub
-----------------------------------------------
使用時の注意
Const Folder As String = "d:\goo\data\goo214" 'DOC格納フォルダ
docが存在するフォルダです。あなたの環境にあわせて適切に設定してください。
Const FORCE_REPLACE As Boolean = True '同一ファイルが存在するときの強制上書き(true=上書きする、false=上書きしない)
同一ファイルが移動先に存在する場合の扱いです。
現在は、trueなので、強制的に移動(上書き)します。
これをflaseにすると移動しません。
実装例ありがとうございます。
説明が足らなかったようでごめんなさい。
名前のところは、処理した人の名前が入ります。
山田とか佐藤とか。。。
このあたりでどのように処理したらよいのか。。。
No.3
- 回答日時:
>名前のところは、処理した人の名前が入ります。
>山田とか佐藤とか。。。
そうなると、マクロでは、名前のところは、任意の文字として扱うので、
○△□●▲■_20170801.doc → ○△□●▲■フォルダへ
●○●_20170726.doc → ●○●フォルダへ
○△□_20170802.doc → ○△□フォルダへ
のような移動になります。
誤動作させない為には、以下の条件が必要です。
1)日付の部分(20170802等)は、必ず、8桁でしょうか。
2)日付の前の_(アンダーバー)は、必ず、半角のアンダーバーで、
○名前○の中にアンダーバーが含まれることはないと考えて良いですか。
つまり
△佐藤△_20170801.doc (全角のアンダーバー)
△_佐藤△_20170801.doc (アンダーバーが2つある)
上記のようなケースはないと考えて良いですか。
実際のファイル名はもう少し複雑になってしまいます。
*****(数字5桁)_場所_ファイル名_処理した人の名前.doc
処理した人の名前フォルダがあるので、ファイル名にある名前部分と同様のフォルダへ振り分けたいと思っています。
(名前の重複はありません。)
No.4
- 回答日時:
すみません。
ますます、わからなくなってきました。
>実際のファイル名はもう少し複雑になってしまいます。
>*****(数字5桁)_場所_ファイル名_処理した人の名前.doc
>処理した人の名前フォルダがあるので、ファイル名にある名前部分と同様のフォルダへ振り分けたいと思っています。
1)最初に提示された日付の部分(20170801等)はどこなのでしょうか。
2)「ファイル名」のなかに名前の部分があって、「処理した人の名前」にも名前があるのですか。
具体的な、以下について実際の例を提示していただけませんでしょうか。
①実際のファイル名
②移動したいフォルダ名
すみません、実際のファイル名は仕事の内容が分かってしまう為、控えております。
やりたい事は、ファイル名に処理した人の名前が入っているので、同じ名前のフォルダへ移動したいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【VBA】フォルダAにある2つのファイルの内1つを、フォルダBへ。もう1つを、フォルダBへ移動したい 6 2022/07/26 08:51
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- システム vba シートの追加について 2 2023/05/17 15:58
- Excel(エクセル) 1つのファイルを複数のフォルダにファイル名を【明日の日付】にして、コピーしたい 5 2022/12/13 20:11
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) 1つのファイルを複数のフォルダにファイル名を【明日の日付】にして、コピーしたい 5 2022/12/13 04:23
- Visual Basic(VBA) Excelのマクロについて教えてください。 作業フォルダ内に2つのファイルがあります。 このファイル 2 2023/07/09 13:40
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
ファイル名と同名のフォルダを自動作成して移動させる方法はありますか?
Access(アクセス)
-
ファイル名を該当フォルダ内から検索して移動
その他(プログラミング・Web制作)
-
多量のファイルをフォルダに自動振り分けするマクロを教えて下さい。
PowerPoint(パワーポイント)
-
-
4
VBA フォルダ名に特定の文字を含むフォルダを別フォルダにコピーするコードを教えて下さい
Visual Basic(VBA)
-
5
同名フォルダを作成し、そのフォルダに移動するバッチ
その他(プログラミング・Web制作)
-
6
Windowsで複数のファイルを同じ名前のフォルダーに振分ける方法を教えてください。
Microsoft ASP
-
7
excel VBA 部分一致の名前をパスに指定する方法
Excel(エクセル)
-
8
Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい
Visual Basic(VBA)
-
9
VBSでファイル名と同じフォルダを作成し、移動させる。
Visual Basic(VBA)
-
10
ファイルと同名のフォルダに移動するには?
その他(パソコン・スマホ・電化製品)
-
11
エクセル VBA ファイルをフォルダへ移動させる
その他(Microsoft Office)
-
12
.batでファイル名から抽出してフォルダを作成しコピーする
その他(プログラミング・Web制作)
-
13
バッチを用いたフォルダの自動移動
Visual Basic(VBA)
-
14
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
15
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
16
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
17
一括でフォルダと同じ名前にファイルをリネームしたい
フリーソフト
-
18
サブフォルダー内のPDFファイルを別フォルダにコピーするVBA
Excel(エクセル)
-
19
サブフォルダ内のファイルを全部移動させたい。
Visual Basic(VBA)
-
20
自動で.xlsを閉じて指定フォルダに移動させたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
VBA 最新のフォルダ取得
-
ディレクトリ名変更してコピー...
-
フォルダにリンクを貼りたい
-
同一フォルダ内の別ブックから...
-
保存先のフォルダ名を指定した...
-
pythonでDepixを起動
-
windowsでテキストファイルの各...
-
集めたシートのシート名を変更...
-
Excel VBA マクロ リストボックス
-
指定フォルダからファイルを全...
-
エクセルのデータをメモ帳に貼...
-
Pythonの作業環境・作業フォル...
-
フォルダのサイズを一覧にした...
-
あるフォルダの中にあるファイ...
-
フォルダを自分ごと削除
-
エクセル VBAについて教えてく...
-
ExcelのVBA:フォルダ内のファイ...
-
インストール時に、空フォルダ...
-
excelマクロ 冒頭3文字が一致す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows10でコマンドプロンプト...
-
windowsでテキストファイルの各...
-
VBA 最新のフォルダ取得
-
ファイル名と同名のフォルダを...
-
VBA フォルダ名に特定の文字を...
-
デスクトップの画像をhtmlに表...
-
Excelのハイパーリンクについて...
-
フォルダ内のPDFファイル名を変...
-
Excelで指定したフォルダに保存...
-
会社のネットワーク上のファイ...
-
【マクロ】ファイル名の日付に...
-
保存先のフォルダ名を指定した...
-
多量のファイルをフォルダに自...
-
パス名に2バイト文字(マルチバ...
-
ディレクトリ名変更してコピー...
-
Access VBA で フォルダ権限...
-
C ファイル出力で、フォルダが...
-
サーバ内のフォルダ名と各フォ...
-
フォルダにリンクを貼りたい
-
vbsで選択ダイアログを表示した...
おすすめ情報