기본적으로 다른 파일의 파일 날짜를 복제 / 복제하고 배치 파일에서 사용할 수있는 '터치'기능을 원했습니다.
따라서 비디오 파일을 배치 파일로 '끌어다 놓기'하면 FFMPEG가 실행 된 다음 입력 파일의 'Date Created'및 'Date Modified'가 출력 파일에 복사됩니다.
배치 파일이 유니 코드 파일 이름을 처리하고 인라인 PowerShell이 파일 이름 기호로 엉망이되어 두 번 이스케이프 처리하는 것이 악몽이라는 것을 알 때까지 처음에는 간단 해 보였습니다.
내 솔루션은 'touch'부분을 'CLONE-FILE-DATE.ps1'이라는 별도의 PowerShell 스크립트로 만들고 다음을 포함합니다.
param
(
[Parameter(Mandatory=$true)][string]$SourcePath,
[Parameter(Mandatory=$true)][string]$TargetPath
)
(GI -LiteralPath $TargetPath).CreationTime = (GI -LiteralPath $SourcePath).CreationTime
(GI -LiteralPath $TargetPath).LastWriteTime = (GI -LiteralPath $SourcePath).LastWriteTime
다음은 내 'CONVERT.BAT'배치 파일 내의 사용법 예입니다.
%~dp0\ffmpeg -i "%~1" ACTION "%~1-output.mp4"
CHCP 65001 > nul && PowerShell -ExecutionPolicy ByPass -File "%~dp0\CLONE-FILE-DATE.PS1" "%~1" "%~1-output.mp4"
PowerShell을 읽을 수 있다고 생각하므로 배치에 대해 설명합니다.
% ~ dp0 은 배치 파일의 현재 디렉토리입니다.
% ~ 1 은 파일 경로가 따옴표없이 배치로 삭제 된 경로입니다.
CHCP 65001> nul 은 문자를 UTF-8로 설정하고 출력을 삼 킵니다 .
-ExecutionPolicy ByPass를 사용하면 글로벌 정책을 수정하지 않고도 PowerShell을 실행할 수 있으므로 사람들이 실수로 스크립트를 실행하는 것을 방지 할 수 있습니다.