なんだかよくワカラン、チョーシにのりすぎたかも。
酔っ払いなんで許して。
chkdsk.cmd
@echo off
REM chcp 437
REM chcp 932
setlocal enableextensions enabledelayedexpansion
set cp=
(chcp |find "932" >nul 2>&1 && set cp=jp) || chcp |find "437" >nul 2>&1 || chcp 437
for /f "tokens=4,5 delims=. " %%A in ('ver') do set /a winver=%%A+%%B
:loop
if "%cp%"=="jp" (
echo.
echo 1. CHKDSK を読み取り専用モードで実行します。
echo 2. ディスクのエラーを修復します。
echo 3. 不良セクターを見つけて、読み取り可能な情報を回復します。
echo 4. ヤメル^^!?
echo.
set /p opt="CHKDSK の実行方法を選択してください。[1,2,3,4]? "
echo.
if "!opt!"=="1" (
set opt=
goto :loop2
)
if "!opt!"=="2" (
set opt=/F
goto :loop2
)
if "!opt!"=="3" (
set opt=/R
goto :loop2
)
if not "!opt!"=="4" goto :loop
goto :end
) else (
echo.
echo 1. Run CHKDSK in read-only mode.
echo 2. Fixes errors on the disk.
echo 3. Locates bad sectors and recovers readable information.
echo 4. Abort^^!?
echo.
set /p opt="How to run CHKDSK [1,2,3,4]? "
echo.
if "!opt!"=="1" (
set opt=
goto :loop2
)
if "!opt!"=="2" (
set opt=/F
goto :loop2
)
if "!opt!"=="3" (
set opt=/R
goto :loop2
)
if not "!opt!"=="4" goto :loop
goto :end
)
:loop2
if "%cp%"=="jp" (set /p drv="全ドライブをチェックしますか [Y,N]? ") else (set /p drv="Check all drives. [Y,N]? ")
echo.
if /i "%drv%"=="n" (
if "%cp%"=="jp" (
for %%A in (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z) do (if exist %%A: vol %%A: |find "ボリューム ラベル")
) else (
for %%A in (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z) do (if exist %%A: vol %%A: |find "Volume in drive")
)
set drv=
if "%cp%"=="jp" (
echo.
echo ドライブ文字を指定してください、複数でも構いません。
echo.
set /p drv=">"
) else (
echo.
echo Specifies the drive letter(s^).
echo.
set /p drv=">"
)
if not defined drv goto :loop2
for %%A in (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z) do set drv=!drv:%%A=%%A!
set que=
call :set_que
goto :start_que_selected
)
if /i not "%drv%"=="y" goto :loop2
set que=C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z
:start_que
for %%A in (%que%) do (
if exist %%A: (
if %winver% geq 10 (
if not defined opt call :wsh %%A
)
call :check_drv %%A
)
)
goto :quit
:start_que_selected
for %%A in (%que%) do (
if exist %%A: (
if %winver% geq 10 (
if not defined opt call :wsh %%A
)
call :check_drv %%A
) else (
if "%cp%"=="jp" (
echo.
echo ドライブ %%A は見つかりません、ドライブ文字を確認してください。
echo.
) else (
echo.
echo Drive %%A not found, check drive letter.
echo.
)
)
)
goto :quit
:set_que
if not defined drv exit /b
set que=%que% %drv:~0,1%
set drv=%drv:~1%
goto :set_que
:wsh
set tempfile="%temp%\~%random%_getfs.vbs"
(
echo Set fso=CreateObject("Scripting.FileSystemObject"^)
echo fs=fso.GetDrive("%1"^).FileSystem
echo fso.GetStandardStream(1^).Write(fs^)
echo Set fso=Nothing
) >%tempfile%
start /wait /b cscript.exe %tempfile% |find "NTFS" >nul 2>&1
if errorlevel 1 set opt=/markclean
:del_temp
if exist %tempfile% del /f /a %tempfile%
if exist %tempfile% goto :del_temp
exit /b
:check_drv
echo on
chkdsk.exe %1: %opt%
@echo off
echo.
echo chkdsk.exe %1: %opt% finished.
echo.
pause
if "%opt%"=="/markclean" set opt=
exit /b
:end
exit
:quit
echo.
echo "%~f0"
echo.
pushd %SystemRoot%\system32
cmd.exe
修正しました、酔っぱらってるけど。
chkdsk.cmd
@if(0)==(0) echo off
REM Save as ANSI or SHIFT-JIS.
REM chcp 437 - us
REM chcp 932 - jp
::if exist %SystemRoot%\system32\wpeinit.exe wpeinit.exe
::Logs are piling up.
if exist %SystemRoot%\system32\wpeinit.exe (
if not exist %SystemRoot%\system32\wpeinit.log (
pushd %SystemRoot%\system32
wpeinit.exe
popd
)
)
setlocal enableextensions enabledelayedexpansion
(chcp |find "932" >nul 2>&1 && set cp=jp) || (chcp |find "437" >nul 2>&1 || chcp 437)
for /f %%A in ('chkdsk.exe /? ^|find /i "/markclean"') do set markclean=%%A
:loop
cls
if defined cp (
echo.
echo 1. CHKDSK を読み取り専用モードで実行します []。
echo 2. ディスクのエラーを修復します [/F]。
echo 3. 不良セクターを見つけて、読み取り可能な情報を回復します [/R]。
echo 4. ヤメル^^!?
echo.
set q=
set /p q="CHKDSK の実行方法を選択してください。[1,2,3,4]? "
if "!q!"=="1" (
set opt=
goto :loop_jp
)
if "!q!"=="2" (
set opt=/F
goto :loop_jp
)
if "!q!"=="3" (
set opt=/R
goto :loop_jp
)
if "!q!"=="4" (
goto :end
) else (
goto :loop
)
:loop_jp
echo.
set q=
set /p q="全ドライブをチェックしますか [Y,N]? "
if /i "!q!"=="n" (
call :get_labl
echo.
echo ドライブ文字を指定してください、複数でも構いません。
echo.
set drv=
set /p drv=">> "
if not defined drv goto :loop_jp
call :set_cptl
for %%A in (!que!) do (
if exist %%A: (
if defined markclean (
if not defined opt call :get_fs %%A
)
call :chk_drv %%A
) else (
echo.
echo ドライブ %%A は見つかりません、ドライブ文字を確認してください。
echo.
pause
)
)
goto :quit
)
if /i not "!q!"=="y" goto :loop_jp
)
if not defined cp (
echo.
echo 1. Run CHKDSK in read-only mode [].
echo 2. Fixes errors on the disk [/F].
echo 3. Locates bad sectors and recovers readable information [/R].
echo 4. Abort^^!?
echo.
set q=
set /p q="How to run CHKDSK [1,2,3,4]? "
if "!q!"=="1" (
set opt=
goto :loop_us
)
if "!q!"=="2" (
set opt=/F
goto :loop_us
)
if "!q!"=="3" (
set opt=/R
goto :loop_us
)
if "!q!"=="4" (
goto :end
) else (
goto :loop
)
:loop_us
echo.
set q=
set /p q="Check all drives [Y,N]? "
if /i "!q!"=="n" (
call :get_labl
echo.
echo Specifies the drive letter(s^).
echo.
set drv=
set /p drv=">> "
if not defined drv goto :loop_us
call :set_cptl
for %%A in (!que!) do (
if exist %%A: (
if defined markclean (
if not defined opt call :get_fs %%A
)
call :chk_drv %%A
) else (
echo.
echo Drive %%A not found, check drive letter.
echo.
pause
)
)
goto :quit
)
if /i not "!q!"=="y" goto :loop_us
)
:chk_all
set que=C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z
for %%A in (%que%) do (
if exist %%A: (
if defined markclean (
if not defined opt call :get_fs %%A
)
call :chk_drv %%A
)
)
goto :quit
:get_labl
echo.
for %%A in (C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z) do if exist %%A: (vol %%A: |find /i "ボリューム ラベル") || (vol %%A: |find /i "Volume in drive")
exit /b
:set_cptl
for %%A in (A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,S,T,U,V,W,X,Y,Z) do set "drv=!drv:%%A=%%A!"
:set_que
if not defined drv exit /b
set ^"que=%que%%drv:~0,1% ^"
set drv=%drv:~1%
goto :set_que
:get_fs
CScript.exe "%~f0" //E:JScript //Nologo %1 |find /i "NTFS" >nul 2>&1
if errorlevel 1 set opt=/markclean
exit /b
:chk_drv
echo on
chkdsk.exe %1: %opt%
@echo off
echo.
echo chkdsk.exe %1: %opt% finished.
echo.
pause
if "%opt%"=="/markclean" set opt=
exit /b
:quit
endlocal
echo.
echo "%~f0"
echo.
pushd %SystemRoot%\system32
cmd.exe
:end
exit
@end
var fso=WScript.CreateObject("Scripting.FileSystemObject")
var fs=fso.GetDrive(WScript.Arguments(0)).FileSystem
WScript.Echo(fs)
fs=null
fso=null