diff --git a/export-clean-copy.bat b/export-clean-copy.bat new file mode 100644 index 0000000..1398ec7 --- /dev/null +++ b/export-clean-copy.bat @@ -0,0 +1,76 @@ +@echo off +setlocal enabledelayedexpansion + +set "TARGET=C:\Users\dohertj2\Desktop\lmxopcua2" +set "REPO=https://gitea.dohertylan.com/dohertj2/lmxopcua.git" + +:: Get today's date at midnight in format YYYY-MM-DD 00:00:00 +for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "DT=%%I" +set "TODAY=%DT:~0,4%-%DT:~4,2%-%DT:~6,2% 00:00:00" + +echo ============================================ +echo LmxOpcUa Clean Export +echo ============================================ +echo. + +:: Step 1: Remove existing folder if it exists, otherwise create it +if exist "%TARGET%" ( + echo Removing existing folder: %TARGET% + rmdir /s /q "%TARGET%" + if errorlevel 1 ( + echo ERROR: Failed to remove %TARGET%. Check if files are in use. + exit /b 1 + ) + echo Removed. +) else ( + echo Target folder does not exist, will be created by git clone. +) +echo. + +:: Step 2: Clone the repository +echo Cloning repository to %TARGET%... +git clone "%REPO%" "%TARGET%" +if errorlevel 1 ( + echo ERROR: git clone failed. + exit /b 1 +) +echo Clone complete. +echo. + +:: Step 3: Remove all git repository info +echo Removing git repository data... +rmdir /s /q "%TARGET%\.git" +if exist "%TARGET%\.gitattributes" del /f /q "%TARGET%\.gitattributes" +echo Git data removed. +echo. + +:: Step 4: Reset all timestamps to today at midnight +echo Setting all timestamps to %TODAY%... + +:: Use PowerShell for reliable recursive timestamp setting +powershell -NoProfile -Command ^ + "$target = '%TARGET%'; " ^ + "$date = Get-Date -Year %DT:~0,4% -Month %DT:~4,2% -Day %DT:~6,2% -Hour 0 -Minute 0 -Second 0; " ^ + "Get-ChildItem -Path $target -Recurse -Force | ForEach-Object { " ^ + " $_.CreationTime = $date; " ^ + " $_.LastWriteTime = $date; " ^ + " $_.LastAccessTime = $date; " ^ + "}; " ^ + "$root = Get-Item $target; " ^ + "$root.CreationTime = $date; " ^ + "$root.LastWriteTime = $date; " ^ + "$root.LastAccessTime = $date; " ^ + "Write-Host ('Timestamps set to ' + $date.ToString('yyyy-MM-dd HH:mm:ss') + ' on all files and folders.')" + +if errorlevel 1 ( + echo WARNING: Some timestamps may not have been updated. +) else ( + echo Timestamps updated. +) + +echo. +echo ============================================ +echo Export complete: %TARGET% +echo ============================================ + +endlocal