iT邦幫忙

4

當W7有很多要檔案相容性要設定的時候.....

微軟的說明:
為 Windows Vista 撰寫的大部分程式也可在此版的 Windows 中運作,但部分舊版的程式可能無法正常執行或完全無法執行。如果針對舊版 Windows 撰寫的程式無法正常執行,您可以手動或使用 [程式相容性疑難排解員] 來嘗試變更程式的相容性設定。

好像沒有可以一次設定數十個執行檔的辨法...
很幸運的我遇到了,一個一個設定也花了十几二十分雖然沒有很久,一直重複一樣的操作給他有點浪費時間,怎麼會有套裝軟體包了几十個的執行檔丫.....

@ECHO OFF
GOTO Bye
:HEAD
SET TAG=HEAD
SET Q=6
CLS
ECHO.
ECHO 您原來執行的系統是那一個?
ECHO 請依下列入編號輸入.
ECHO =====================================================================
ECHO. 1.Windows 95                      Win95
ECHO. 2.Windows 98/Me                   Win98
ECHO. 3.WindowsNT 4.0(SP5)              NT4SP5
ECHO. 4.Windows2000                     Win2000
ECHO. 5.WindowsXP(SP2)                  WinXPSP2
ECHO. 6.WindowsXP(SP3)                  WinXPSP3
ECHO. 7.Windows Server 2003(SP1)        WINSRV03SP1
ECHO. 8.Windows Server 2008(SP1)        WINSRV08SP1
ECHO. 9.WindowsVISTA                    VISTARTM
ECHO. 10.WindowsVISTA(SP1)              VISTA
ECHO. 11.Windows7                       WIN7RTM
ECHO =====================================================================
ECHO.
ECHO 請輸入數字(預設值 6):1-11
SET /P Q=請選擇您原來的系統:
IF /I %Q% GTR 11 (
	GOTO MSG
) ELSE (
	IF /I %Q% LSS 1  GOTO MSG
)
IF /I %Q:~0,1% EQU 0 GOTO MSG
ECHO 您已選擇:%Q%
FOR /F "DELIMS=, TOKENS=%Q%,%Q%" %%N IN ("%OS%") DO SET VALUE=%%N
ECHO 原系統為:!VALUE!
SET TAG=UsersSetup
GOTO LINE
:UsersSetup
SET Q=N
ECHO 要將設定值套用到所有的使用者嗎?
SET /P Q=預設值為 No.(Y/N):
IF /I "%Q:~0,1%" EQU "Y" (
	SET AllUser=Y
	SET RegValue=%Everyone%
) ELSE (
	IF /I "%Q:~0,1%" NEQ "N" (
		GOTO MSG
	)
	SET AllUser=N
	SET RegValue=%Personal%
)
ECHO 您的選擇:%AllUser% 
SET TAG=FoldersSetup
GOTO LINE
:FoldersSetup
SET Q=Y
ECHO 執行檔位置:%~f0
ECHO 目標資料夾:%~d0%~p0
ECHO 是否要將整個資料夾內檔案以相同的設定值來進行設定?
SET /P Q=預設值為 Yes.(Y/N):
IF /I "%Q:~0,1%" EQU "Y" (
	REM 單一設定^(資料夾所有檔案使用單一設定^)
	FOR %%S IN (%Option%) do (
		ECHO --------------------------------------------------------------------------
		SET /A NUM=!NUM!+1
		ECHO 處理中項目編號:!NUM! - %%S
		FOR /F "delims==  tokens=2" %%C IN ('SET Flage!NUM!') DO (
			ECHO %%C
pause
			SET YesNo=N
			SET /P YesNo=請選擇^(輸入 Y 或按 Enter 繼續^)^:
			IF /I !YesNo! EQU Y SET VALUE=!VALUE! %%S
			ECHO 目前狀態:!VALUE!
		)
	)
	SET NUM=
	SET TAG=RegRun
	GOTO LINE
:RegRun
	ECHO 以下資訊將登錄到登錄檔中....
	ECHO 機碼:%RegValue%
	ECHO 字串:%VALUE%
	FOR %%N IN (*.EXE) DO (
		SET /A FileNum=!FileNum!+1
		ECHO 正在處理檔案:%~d0%~p0%%N
		REG ADD "%RegValue%" /V "%~d0%~p0%%N" /T REG_SZ /D "%VALUE%" /F >NUL
	)
	GOTO Bye
)
IF /I "%Q:~0,1%" EQU "N" (
	REM 手動個別設定
	FOR %%N IN (*.EXE) DO (
		SET /A FileNum=!FileNum!+1
		FOR %%S IN (%Option%) do (
			ECHO --------------------------------------------------------------------------
			SET /A NUM=!NUM!+1
			ECHO 處理中項目編號:!NUM! - %%S
			ECHO 正在設定的檔案:%%N
			FOR /F "delims==  tokens=2" %%C IN ('SET Flage!NUM!') DO (
				ECHO %%C
			)
			SET YesNo=N
			SET /P YesNo=.   請選擇^(輸入 Y 或按 Enter 繼續^)^:
			IF /I !YesNo! EQU Y SET VALUE=!VALUE! %%S
			ECHO 目前狀態:!VALUE!
		)
		REG ADD "%RegValue%" /V "%~d0%~p0%%N" /T REG_SZ /D "%VALUE%" /F >NUL
		SET NUM=
	)
	GOTO Bye
)
:LINE
ECHO --------------------------------------------------------------------------
GOTO %TAG%
:MSG
ECHO ^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!
ECHO 輸入錯誤^!請重新輸入.
ECHO 您輸入: %Q% 為不正確的輸入值,請按任一鍵重新輸入.
ECHO ^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!^^!
PAUSE > NUL
GOTO %TAG%
:SETUP
SETLOCAL ENABLEDELAYEDEXPANSION
SET Everyone=HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
SET Personal=HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
SET Option=^RUNASADM ^256COLOR ^640X480 ^DISABLEDWM ^HIGHDPIAWARE ^DISABLETHEMES
SET Flage1=1,如果您執行舊程式時會要求額外的權限,請按Y,若不需要按ENTER繼續。
SET Flage2=2,錯誤訊息表示程式需要在256色下才能執行,請按Y,若不需要按ENTER繼續。
SET Flage3=3,程式在小視窗中啟動(640X480),無法切換到全螢幕,請按Y,若不需要按ENTER繼續。
SET Flage4=4,未正確顯示視窗透明效果,請按Y,若不需要按ENTER繼續。
SET Flage5=5,選取大尺寸字型設定時,程式無法正確顯示,請按Y,若不需要按ENTER繼續。
SET Flage6=6,Windows 控制項被裁切或程式在啟動時變更圖形主題,請按Y,若不需要按ENTER繼續。
SET OS=Win95,Win98,NT4SP5,Win2000,WinXPSP2,WinXPSP3,WINSRV03SP1,WINSRV08SP1,VISTARTM,VISTA,WN7RTM
SET TAG=HEAD
GOTO HEAD
:Bye
CLS
ECHO.
ECHO ==========================感謝使用==========================
ECHO 這個小程式是專為WINDOWS 7裡保留的舊版程式所製作,主要是因應部
ECHO 份舊版進銷存或套裝軟體等,有過多的副程式或執行檔需要修改時加
ECHO 快設定的時間.若是只有三、五個手動設定就好了.....
ECHO 作者:鼎爾資訊 (Dreamer)-企業好幫手
ECHO MAIL:dreamer@mail.dingerbs.com
ECHO 使用上如有遇到問題請與我連絡.
ECHO ==========================感謝使用==========================
ECHO.
IF "%Q%" EQU "" PAUSE&GOTO SETUP
ECHO ------------------------------------------------------------
ECHO 共處理了: %FileNum% 個檔案.
ECHO ------------------------------------------------------------
ECHO.
ECHO 請等待十秒後視窗自動關閉...................
FOR %%N IN (Everyone,Personal,Flage1,Flage2,Flage3,Flage4,Flage5,Flage6,OS,TAG,FileNum,VALUE,AllUser,RegValue,YesNo,Q) DO SET %%N=
PATHPING LOCALHOST -p 100 >nul

2 則留言

0
Ken(Bigcandy)
iT邦大師 1 級 ‧ 2011-12-05 12:59:19

不會程式設計,請問本段程式碼要貼在哪裡?或是批次檔?

不好意思忘了要說明,這是一個批次檔案,只要將內容複製到記事本存成.bat檔就可以了。

感謝好東西分享

0
mars741110
iT邦新手 5 級 ‧ 2017-12-06 18:34:01

蟹老闆大大

如果只要設定單一個程式用Win7 相容性開啟的話呢?

例如:
執行批次檔後 隨身碟內的test.exe 會自動以相容性模式:win7 開啟

非常感謝


Echo Off
Set File=Test.exe
REG ADD "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /V "%~pd0%File%" /T REG_SZ /D "WIN7RTM" /F 
"%~pd0%File%"

蟹老闆 真的很謝謝你 之前也是有幾次的問題是麻煩你

謝謝!!

我要留言

立即登入留言