echo ======================================== echo Running with administrator privileges echo ======================================== echo.
cd /d "%~dp0"
set "LOG_FILE=D:\DiskPermissionFix.log" set "CURRENT_USER=%USERNAME%" set "COMPUTER_NAME=%COMPUTERNAME%"
echo Log file will be saved to: %LOG_FILE% echo.
:MENU cls echo ======================================== echo Disk Permission Fix Tool echo ======================================== echo. echo Current User = !CURRENT_USER! echo Computer Name = !COMPUTER_NAME! echo. echo0 - Exit echo [Press Enter] - Start from D drive echo Input a drive letter (e.g., e) to start from that drive echo.
set /p STARTDRV=Enter the starting drive letter and press Enter (default is D):
if "%STARTDRV%"=="0" exit /b if "%STARTDRV%"=="" set STARTDRV=D
:: Convert to uppercase and get first character only set STARTDRV=%STARTDRV:~0,1% for%%Zin (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( if /i "%STARTDRV%"=="%%Z" set STARTDRV=%%Z )
echo. echo Will start from drive %STARTDRV%for permission fix... echo. pause
:: ======================================== :: Enumerate all available fixed drives :: Only get NTFS drives, exclude C: drive, optical drives, and removable drives :: DriveType 3 = Local Disk :: ======================================== echo. echo Scanning for NTFS drives... echo.
set DRIVES= set COUNT=0
:: Simple method: check each drive letter directly for%%Din (D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( ifexist%%D:\ ( :: Try to get file system type for /f "tokens=*" %%Fin ('fsutil fsinfo volumeinfo %%D: 2^>nul ^| findstr /C:"File System Name"') do ( echo%%D: %%F echo%%F | findstr /I "NTFS" >nul if!errorlevel!EQU0 ( set DRIVES=!DRIVES!%%D: set /a COUNT+=1 echo Found NTFS drive: %%D: ) ) ) )
if!COUNT!EQU0 ( echo No NTFS drives found excluding C drive! echo. echo Troubleshooting: Listing all existing drives... for%%Din (D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( ifexist%%D:\ ( echo Drive %%D: exists vol%%D: ) ) pause goto MENU )
:: ======================================== :: Start from the selected drive :: ======================================== set DO_RUN=0 set PROCESSED=0
for%%Din (%DRIVES%) do ( set THIS=%%D set THISDRV=%%D set THISDRV=!THISDRV:~0,1!
:: Check if we have reached the selected start drive if /i "!THISDRV!"=="%STARTDRV%" set DO_RUN=1