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

WSHでこんなことってできますでしょうか?

1.下記1-1の場所にフォルダ、ファイルが多数あります。
「2010年01月分」?「2010年05月分」を除いて
たとえば今月であれば「2010年06月分」という当月のフォルダ中に
移動させたいです。
※上記フォルダは月度が変わるごとにどんどん追加されます。

※アクセス権や使用中で移動できないファイル・フォルダがあった場合は、
移動をさせずスキップするとうれしいです。

1-1 \\192.1.0.1\Data



2.下記2-1のフォルダにある2-2というファイルを
2-3フォルダに移動をさせたいです

2-1 \\192.1.0.1\Data

2-2 log_201006070100.log
※log_のあとは「年号」「日付」「時間」という12桁の数字で1時間ごとに作成されます。

2-3 \\192.1.0.1\Log


この2つの動作がスクリプトファイルを開いたときに
実施されるとうれしいです。

どうぞよろしくお願いいたします。

●質問者: ohtsu6
●カテゴリ:コンピュータ
✍キーワード:1月 2010年 5月 6月 WSH
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●1200ポイント

一応仕様通りに作成してみましたが、二つの処理が同じフォルダに対する処理となっていましたので、

ログファイルを優先してLogフォルダへ移動するために、実行順序を逆にしています。


実際は異なるフォルダへ処理であるなら、処理1と処理2を逆に書いても動作は同じになります。


Option Explicit
'//-------------------------------------------------
'// パスの定義
'//-------------------------------------------------
Const UNC_1_1 = "\\192.168.100.2\Data"
Const UNC_2_1 = "\\192.168.100.2\Data"
Const UNC_2_3 = "\\192.168.100.2\Log"

'//-------------------------------------------------
'// 共通オブジェクトの作成
'//-------------------------------------------------
 Dim fso
 Set fso = CreateObject("Scripting.FileSystemObject")

 Dim objEx
 Set objEx = new RegExp

 Dim srcFolder
 Dim dstFolder
 Dim ff

'// --- エラー停止を無効
 On Error Resume Next


'//-------------------------------------------------
'// 処理 2
'//-------------------------------------------------
'//--- ログファイルの形式を log_数字12桁.log に想定
 objEx.pattern = "^log_\d{12}.log$"

 srcFolder = UNC_2_1 & "\"
 dstFolder = UNC_2_3 & "\"

'//--- ログファイルの移動
 For Each ff In fso.GetFolder( srcFolder ).Files
 If objEx.Test(ff.Name) Then
 fso.MoveFile ff.Path, dstFolder
 End If
 Next

'//-------------------------------------------------
'// 処理 1
'//-------------------------------------------------
'//--- フォルダ形式を YYYY年MM月分 に想定(月も2桁に限定)
 objEx.pattern = "^\d{4}年\d{2}月分$"
 srcFolder = UNC_1_1
 dstFolder = UNC_1_1 & "\" & Year(Date) & "年" & Right( "0" & Month(Date), 2) & "月分\"

'//--- 当月のフォルダがなければ作成
 If Not fso.FolderExists( dstFolder ) Then
 fso.CreateFolder dstFolder
 End If

'//--- ファイルの移動
 For Each ff In fso.GetFolder( srcFolder ).Files
 fso.MoveFile ff.Path, dstFolder
 Next

'//--- フォルダの移動
 For Each ff In fso.GetFolder( srcFolder ).SubFolders
 If Not objEx.Test(ff.Name) Then
 fso.MoveFolder ff.Path, dstFolder
 End If
 Next
◎質問者からの返答

Mookさま

できました。

いつもありがとうございます。

関連質問


●質問をもっと探す●



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