मैं दूसरी फ़ाइल से, मूल रूप से, और बैच फ़ाइल से प्रयोग करने योग्य होने के लिए फ़ाइल तिथियों को क्लोन / डुप्लिकेट करने की 'टच' सुविधा चाहता था।
इसलिए बैच फ़ाइल, FFMPEG पर 'ड्रैग एंड ड्रॉप' वीडियो फाइल चलती है, फिर इनपुट डेट से 'डेट क्रिएटेड' और 'डेट मोडिफाइड' आउटपुट फाइल में कॉपी हो जाती है।
यह पहली बार में सरल लग रहा था जब तक आप पाते हैं कि बैच फाइलें यूनिकोड फ़ाइल नामों से निपटने में भयानक होती हैं, इन-लाइन पॉवरशेल फ़ाइल नाम प्रतीकों के साथ गड़बड़ करती है, और डबल बचना एक बुरा सपना है।
मेरा समाधान 'स्पर्श' भाग को एक अलग PowerShell स्क्रिप्ट बना रहा था जिसे मैंने 'CLONE-FILE-DATE.ps1' कहा था और इसमें शामिल हैं:
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 यूटीएफ -8 में वर्ण सेट करता है और आउटपुट को निगलता है।
-ExecutionPolicy बायपास आपको ग्लोबल पॉलिसी को संशोधित करने की आवश्यकता के बिना पावरशेल चलाने की अनुमति देता है, जो गलती से चलने वाली स्क्रिप्ट को रोकने के लिए वहां है।