A batch file for monitor the new disk drive and copy the file.
monitor_drives.bat
@echo off
setlocal EnableDelayedExpansion
:: 設定 Default 檔案
REM set Default_FILE=TPM_default_test.txt
REM set RSC_Default_FILE=RSC_default_test.txt
:: 檢查是否提供了 Default_FILE , Default_Startup_FILE 參數
if "%1"=="" (
echo Error: Please provide a Default_Startup_FILE ^(e.g., monitor_drivers.bat TPM_default_ChkVer.txt TPM_default_startup_ChkVer.nsh^)
exit /b 0
)
if "%2"=="" (
echo Error: Please provide a Default_Startup_FILE ^(e.g., monitor_drivers.bat TPM_default_ChkVer.txt TPM_default_startup_ChkVer.nsh^)
exit /b 0
)
set Default_FILE=%1
set Default_Startup_FILE=%2
:: 設定輸出檔案路徑
set OUTPUT_FILE=detected_drives.txt
:: 清空或創建輸出檔案
echo. > %OUTPUT_FILE%
:: 儲存初始的磁碟機清單
set "PREV_DRIVES="
for /f "tokens=*" %%d in ('wmic logicaldisk where drivetype^=2 get deviceid ^| find ":"') do (
set "PREV_DRIVES=!PREV_DRIVES! %%d"
)
:loop
:: 等待1秒
timeout /t 1 /nobreak >nul
:: 獲取當前磁碟機清單
set "CURRENT_DRIVES="
for /f "tokens=*" %%d in ('wmic logicaldisk where drivetype^=2 get deviceid ^| find ":"') do (
set "CURRENT_DRIVES=!CURRENT_DRIVES! %%d"
)
:: 檢查是否有新磁碟機
set "NEW_DRIVE="
for %%d in (%CURRENT_DRIVES%) do (
echo %PREV_DRIVES% | find /i "%%d" >nul || set "NEW_DRIVE=%%d"
)
:: 如果檢測到新磁碟機,將其寫入檔案
if defined NEW_DRIVE (
echo %NEW_DRIVE% > %OUTPUT_FILE%
REM echo %date% %time% - New drive detected: %NEW_DRIVE% >> %OUTPUT_FILE%
echo New drive detected: %NEW_DRIVE%
REM 讀取 detected_drives.txt 中最後一行的磁碟機代號,忽略空白行
REM set "DRIVE_LETTER="
REM for /f "tokens=1 delims= " %%a in ('echo "%NEW_DRIVE%" ^| findstr /v "^\s*$"') do (
REM set "DRIVE_LETTER=%%a"
REM )
REM echo DRIVE_LETTER: %NEW_DRIVE%
if defined NEW_DRIVE (
:: 等待3秒
timeout /t 3 /nobreak >nul
:: 直接比較 UTF-16 LE 檔案
fc /b %Default_FILE% %NEW_DRIVE%\default_test.txt > nul && (
echo "The file is same default_test.txt %Default_FILE%"
) || (
echo %NEW_DRIVE%\default_test.txt
echo "%Default_FILE%"
copy /Y %Default_FILE% %NEW_DRIVE%\default_test.txt
echo "%Default_Startup_FILE%"
copy /Y %Default_Startup_FILE% %NEW_DRIVE%\startup.nsh
)
)
)
:: 更新前一次的磁碟機清單
set "PREV_DRIVES=%CURRENT_DRIVES%"
goto loop