由於教科書的書商已不提供教材光碟給老師,書商就利用Google雲端硬碟存放教科書ISO。將連結給老師,讓老師去下載ISO。想當然爾,這件事沒什麼大問題。可是當所有的老師同時從Google雲端硬碟下載ISO時,學校對外頻寬就通通被佔用了。
為了解決這個問題,學校建置雲端硬碟集中書商教材ISO。採用免費 Linux 的 Samba 來建立雲端硬碟,請參閱資料來源2.acfs14.04 x32 使用 samba 當作學校檔案伺服器 與資料來源3.xubuntu 18.04.03 x32 用shell 快速完成 samba 設定。
希望能讓老師直接點兩下,免帳號、免密碼就可以下載教科書的ISO。
上一期發現老師的電腦作業系統有Windows 7、Windows 10,沒想到有位老師剛換新電腦,他電腦的作業系統竟然是最新的Windows 11。那我目前寫的程式,能夠滿足Windows 作業系統各版本的需求,讓老師都能夠使用嗎?還是我需要做些調整,讓程式可以適用Windows 作業系統各版本。那我該怎麼做呢?
讓BAT能夠判斷現在的環境是什麼作業系統,再來依作業系統來進行相關的程序。
檔案下載 解壓密碼demo1234
檔案名稱:判斷作業系統.BAT
檔案內容:
@echo off
systeminfo | find "作業系統名稱:" > %~dp0RegSetting\SystemInfo.txt
FOR /F "usebackq delims=: tokens=2" %%i IN (%~dp0RegSetting\SystemInfo.txt) DO set vers=%%i
echo %vers% | find/i "Windows 7" > nul
if %ERRORLEVEL% == 0 goto ver_7
echo %vers% | find "Windows 10" > nul
if %ERRORLEVEL% == 0 goto ver_10
echo %vers% | find "Windows 11" > nul
if %ERRORLEVEL% == 0 goto ver_11
:ver_7
@echo "作業系統是 Windows 7"
pause
exit
:ver_10
@echo "作業系統是 Windows 10"
pause
exit
:ver_11
@echo "作業系統是 Windows 11"
pause
exit
那我們將上述程式碼寫入我們的批次檔。
檔案名稱:登入雲端公用區.bat
檔案內容:
REM 設定伺服器IP
set ServerIP=172.20.3.5
REM =======以下是程式碼可不用修改===============
@echo off
REM 偵測作業系統版本只要做一次就好
if not exist %~dp0RegSetting\SystemInfo.txt (
systeminfo | find "作業系統名稱:" > %~dp0RegSetting\SystemInfo.txt
)
REM 從SystemInfo.txt取得版本訊息
FOR /F "usebackq delims=: tokens=2" %%i IN (%~dp0RegSetting\SystemInfo.txt) DO set vers=%%i
REM 版本比對
echo %vers% | find/i "Windows 7" > nul
if %ERRORLEVEL% == 0 goto ver_7
echo %vers% | find "Windows 10" > nul
if %ERRORLEVEL% == 0 goto ver_10
echo %vers% | find "Windows 11" > nul
if %ERRORLEVEL% == 0 goto ver_11
REM Windos 7
:ver_7
@echo "作業系統是 Windows 7"
net use /d * /y
cls
@echo 網路磁碟公用區登入程序
@echo =====================================
@echo off
net use v: \\%ServerIP%\public
exit
REM Windos 10
:ver_10
@echo "作業系統是 Windows 10"
if exist %~dp0RegSetting\1.txt (
net use /d * /y
cls
@echo 網路磁碟公用區登入程序
@echo =====================================
@echo off
net use v: \\%ServerIP%\public
exit
) else (
@echo 停止群組安全原則
@regedit.exe /s "%~dp0RegSetting\停止群組安全原則.reg"
@echo OK > %~dp0RegSetting\1.txt
@echo "等下會重新開機,開機後再執行此批次檔。即可進入雲端硬碟!!"
shutdown /r /f /t 0
)
pause
exit
REM Windos 11
:ver_11
@echo "作業系統是 Windows 11"
if exist %~dp0RegSetting\1.txt (
net use /d * /y
cls
@echo 網路磁碟公用區登入程序
@echo =====================================
@echo off
net use v: \\%ServerIP%\public
exit
) else (
@echo 停止群組安全原則
@regedit.exe /s "%~dp0RegSetting\停止群組安全原則.reg"
@echo OK > %~dp0RegSetting\1.txt
@echo "等下會重新開機,開機後再執行此批次檔。即可進入雲端硬碟!!"
shutdown /r /f /t 0
)
pause
exit
檔案名稱:以後不用公用區_電腦恢復原原狀.bat
檔案內容:
@echo off
REM 偵測作業系統版本只要做一次就好
if not exist %~dp0RegSetting\SystemInfo.txt (
systeminfo | find "作業系統名稱:" > %~dp0RegSetting\SystemInfo.txt
)
REM 從SystemInfo.txt取得版本訊息
FOR /F "usebackq delims=: tokens=2" %%i IN (%~dp0RegSetting\SystemInfo.txt) DO set vers=%%i
REM 版本比對
echo %vers% | find/i "Windows 7" > nul
if %ERRORLEVEL% == 0 goto ver_7
echo %vers% | find "Windows 10" > nul
if %ERRORLEVEL% == 0 goto ver_10
echo %vers% | find "Windows 11" > nul
if %ERRORLEVEL% == 0 goto ver_11
REM Windos 7
:ver_7
@echo "作業系統是 Windows 7"
@echo "電腦已回復先前設定"
@echo "感謝您的使用!!"
pause
exit
REM Windos 10
:ver_10
@echo "作業系統是 Windows 10"
if exist %~dp0RegSetting\1.txt (
@echo 回復群組安全原則
@regedit.exe /s "%~dp0RegSetting\回復群組安全原則.reg"
del %~dp0RegSetting\1.txt
@echo "等下會重新開機,電腦就會回復先前設定"
@echo "感謝您的使用!!"
pause
shutdown /r /f /t 0
)
exit
REM Windos 11
:ver_11
@echo "作業系統是 Windows 11"
if exist %~dp0RegSetting\1.txt (
@echo 回復群組安全原則
@regedit.exe /s "%~dp0RegSetting\回復群組安全原則.reg"
del %~dp0RegSetting\1.txt
@echo "等下會重新開機,電腦就會回復先前設定"
@echo "感謝您的使用!!"
pause
shutdown /r /f /t 0
)
exit
檔案名稱:回復群組安全原則.reg
檔案內容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation]
"AllowInsecureGuestAuth"=dword:00000000
檔案名稱:停止群組安全原則.reg
檔案內容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\LanmanWorkstation]
"AllowInsecureGuestAuth"=dword:00000001
檔案名稱:登出雲端公用區.bat
檔案內容:
echo off
net use /d * /yes
exit
資料來源: