Clones from remote, strips .git metadata (keeps .gitignore), and resets all file timestamps to today at midnight for consistent distribution. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
77 lines
2.3 KiB
Batchfile
77 lines
2.3 KiB
Batchfile
@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
|