2016-06-02 5 views
2

StackOverflowに投稿されている既存のバッチファイルを自分の仕事に合わせようとしていますが、バッチファイルの構文とコマンドの特定の領域に関するガイダンスが必要です。Windowsのバッチファイル - 変更したファイルや作成日でフォルダをソートする

このタスクは、作成および/または変更日(どちらか早い方のどちらか早い方)によってイメージファイルでいっぱいのフォルダをサブフォルダにソートすることです。

以下のスクリプトはファイルの作成日に動作しますが、ファイルのグループが別のフォルダからコピーされている場合、それらはすべて同じ作成日を持ちます(以前の「変更日」を保持します。最も早い方の日付を使用してください)

感謝の意を表します。

コード私は適応を見てきた:

@echo off 
    setlocal enabledelayedexpansion 
    set RawData="C:\Users\Jernau\source_image\*.jpg" 
    set ArchiveFolder="C:\Users\Jernau\source_image\organised\" 
    for %%a in ("%RawData%") do (
     echo Processing %%~nxa ... 
     set File=%%~fa 
     for /f "tokens=1* delims=," %%a in ('wmic datafile where "name= 
      '!File:\=\\!'" get 'CreationDate' /format:csv ^| find /i 
      "%ComputerName%"') do (set CreationDate=%%b) 
     echo %%~nxa: !CreationDate! 
     set cYear=!CreationDate:~0,4! 
     set cMonth=!CreationDate:~4,2! 
     set cDay=!CreationDate:~6,2! 
     set TimeStamp=!cYear!-!cMonth!-!cDay! 
     if not exist "%ArchiveFolder%\!TimeStamp!" (
      md "%ArchiveFolder%\!TimeStamp!" 
     ) 
     move "!File!" "%ArchiveFolder%\!TimeStamp!" 
    ) 

答えて

0

これは私がなってしまった(.VBS)スクリプトです。別の場所にあるコードから変更すると、写真が撮影された日付までに、ターゲットフォルダ内のすべての写真のサブフォルダが作成されます。それは完璧ではありませんが、カメラの出力を処理するためには非常にうまく機能します。

folderName = "C:\photos to sort into folder\" 

Set objShell = CreateObject("Shell.Application") 
Set objFolder = objShell.NameSpace(folderName) 

Set fso = CreateObject("Scripting.FileSystemObject") 
Set f = fso.GetFolder(folderName) 
Set fc = f.Files 

For Each fs In fc 
    If lcase(fso.GetExtensionName(fs)) = "jpg" Then 

     Set objFolderItem = objFolder.ParseName(fs.Name) 
     strValue = objFolder.GetDetailsOf(objFolderItem, 12) 

     If strValue <> "" Then 

'Local time settings cause problems with DatePart, so manually split and set strValue to a Date object 
strValue = CDate(right(left(strValue,13),4) & "-" & right(left(strValue,7),2) & "-" & right(left(strValue,3),2)) 

      newYY = DatePart("yyyy", strValue) 
      newMM = DatePart("m", strValue) 
      If newMM < 10 Then newMM = "0" & newMM 
      newDD = DatePart("d", strValue) 
      If newDD < 10 Then newDD = "0" & newDD 
      newFolder = folderName & newYY & "-" & newMM & "-" & newDD 'check for valid drive and path 

       If Not fso.FolderExists(newFolder) Then 
       fso.CreateFolder(newFolder) 
       End If 

'    fso.CopyFile fs.Path, newFolder & "\" 
       fso.MoveFile fs.Path, newFolder & "\" 
     End If 
    End If 
Next 
+0

これはバッチファイルではないことに注意してください。 –

+0

はい、よく見つかりました。重要なポイント。必要なコマンドはVBで見つかりました。したがって、このコードはVBScriptスクリプトファイル(.vbs)です。 – Jernau

関連する問題