Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- +*****************************************************************************************+
- *******************************************************************************************
- ** THIS IS AN EPIC UBER MEGA BATCH FILE THAT EVEN TOOK CHATGPT MANY HOURS TO GET RIGHT. **
- ** THIS IS A BATCH FILE TO COPY DATE/TIME STAMPS FROM ALL FILES OF A SPECIFIC TYPE IN **
- ** ONE DIRECTORY TO ALL FILES OF THE SAME NAME, BUT DIFFERENT TYPE IN ANOTHER DIRECTORY. **
- ** IT IS TO BE USED AFTER BATCH CONVERSION OF FILES FROM ONE FORMAT TO ANOTHER WHERE **
- ** YOU WANT TO RETAIN THE DATE/TIME STAMP OF THE ORIGINAL FILES. FOR EXAMPLE, YOU USED **
- ** EITHER HANDBRAKE OR FFMPEG TO CONVERT A BUNCH OF STUFF, BUT NOW THOSE NEW FILES HAVE **
- ** THE DATE/TIME OF THE CONVERSION RATHER THAN OF THE ORIGINAL RECORDING DATE. THIS **
- ** FIXES THAT SITUATION. (C)OPYLEFT 2025 OGREVORBIS DOSAIDSOFT **
- ** **
- ** (note: like one out of every 20 files, it will get the time off by only like 1 hour) **
- ** (prerequisite: nircmd - from Nir Sofer - nirsoft) **
- *******************************************************************************************
- +*****************************************************************************************+
- @echo off
- setlocal enabledelayedexpansion
- if "%~1"=="" (
- echo Please provide the source directory as the first parameter.
- exit /b 1
- )
- if "%~2"=="" (
- echo Please provide the target directory as the second parameter.
- exit /b 1
- )
- set "SOURCE_DIR=%~1"
- set "TARGET_DIR=%~2"
- :: Loop through all MP4 files
- for %%F in ("%SOURCE_DIR%\*.mp4") do (
- set "FILENAME=%%~nF"
- set "DEST_FILE=%TARGET_DIR%\!FILENAME!.ogg"
- if exist "!DEST_FILE!" (
- rem Extract full timestamp string from the source file
- for %%D in ("%%~fF") do set "STAMP=%%~tD"
- rem Split STAMP into date and time parts
- for /f "tokens=1,2,3" %%a in ("!STAMP!") do (
- set "DATE=%%a"
- set "TIME=%%b"
- set "AMPM=%%c"
- )
- rem Parse DATE - assume system format is MM/DD/YYYY
- for /f "tokens=1,2,3 delims=/" %%d in ("!DATE!") do (
- set "DD=%%d"
- set "MM=%%e"
- set "YYYY=%%f"
- )
- rem Parse TIME - separate hours and minutes
- for /f "tokens=1,2 delims=:" %%g in ("!TIME!") do (
- set "HOUR=%%g"
- set "MIN=%%h"
- )
- rem Adjust hour for AM/PM
- if "!AMPM!"=="PM" (
- if NOT "!HOUR!"=="12" (
- set /a HOUR=1!HOUR! - 100 + 12
- )
- ) else (
- if "!HOUR!"=="12" (
- set "HOUR=0"
- )
- )
- rem Assemble final timestamp string for NirCmd
- set "FINALSTAMP=!MM!-!DD!-!YYYY! !HOUR!:!MIN!:00"
- echo Setting timestamp on: !DEST_FILE! to !FINALSTAMP!
- nircmd.exe setfiletime "!DEST_FILE!" now "!FINALSTAMP!" ""
- ) else (
- echo Skipping: !DEST_FILE! (not found)
- )
- )
- echo Done.
- pause
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement