朝活ならぬ、「 #あ写活 」のすすめ。絶景を撮るなら朝だよ!!
abc
海と猫と週末写真家
「Lightroom Classic CCとX RAW STUDIOの併用の課題をバッチファイルで処理する話」
— abc (@dabcphoto) July 22, 2018
需要は
そこで、データを読み込む際には、ファイル名の頭に「yyyymmdd-」を付けます。また、末尾には「-XE3」を付けます。
これでファイル名に一意性を持たせることができます。読み込んだファイル名はRAFとJPGがそれぞれこうなります。
ここまでLightroomの標準機能です。
ここまでLightroomの標準機能です。
@echo off
cd /d %~dp0
dir !X-E3作業用*.RAF /B /A-D /ON > 00_filelist.txt
rem dir !X-E3作業用*.JPG /B /A-D /ON > 00_JPG_filelist.txt
copy nul XX_move_filelist.txt
rem 「file.txt」ファイルの内容を読み込みながら繰り返す
for /f %%i in (00_filelist.txt) do (
call :listup %%i
)
cscript 00.replaceStr.vbs
pause
:listup
setlocal
set filename=%1
set filename_body=%filename:~,21%
set yyyy=%filename:~,4%
set mm=%filename:~4,2%
set dd=%filename:~6,2%
set dirname=%yyyy%-%mm%-%dd%
set copy_filename=%filename:~,21%
forfiles /p %dirname% /m %filename_body%* >> XX_move_filelist.txt
exit /b
↑上のバッチファイルの処理中に、VBScriptを呼び出して処理をする。
Dim objWshShell ' WshShell オブジェクト
Dim txtFileName
txtFileName = "XX_move_filelist.txt"
Set objWshShell = WScript.CreateObject("WScript.Shell")
If Err.Number = 0 Then
'WScript.Echo "現在のフォルダは " & objWshShell.CurrentDirectory & " です。"
Else
WScript.Echo "エラー: " & Err.Description
break
End If
Const ForReading = 1
Const ForWriting = 2
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile( objWshShell.CurrentDirectory & "" & txtFileName, ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.Readline
strLine = Trim(strLine)
If Len(strLine) > 0 Then
strLine = Mid(strLine , 2 , len(strLine)-2)
strNewContents = strNewContents & strLine & vbCrLf
End If
Loop
objFile.Close
Set objFile = objFSO.OpenTextFile(objWshShell.CurrentDirectory & "" & txtFileName, ForWriting)
objFile.Write strNewContents
objFile.Close
Set objWshShell = Nothing
'msgbox "完了"
@echo off
cd /d %~dp0
rem 「file.txt」ファイルの内容を読み込みながら繰り返す
for /f %%i in (XX_move_filelist.txt) do (
call :file_move %%i
)
pause
:file_move
setlocal
set filename=%1
set yyyy=%filename:~,4%
set mm=%filename:~4,2%
set dd=%filename:~6,2%
set dirname=%yyyy%-%mm%-%dd%
set filename_body=%filename:~,21%
move %dirname%%filename% !X-E3作業用
exit /b
@echo off
cd /d %~dp0
for /f %%i in (XX_move_filelist.txt) do (
call :file_return %%i
REM echo %%i
)
pause
:file_return
setlocal
set filename=%1
set yyyy=%filename:~,4%
set mm=%filename:~4,2%
set dd=%filename:~6,2%
set dirname=%yyyy%-%mm%-%dd%
move !X-E3作業用%filename% %dirname%
exit /b