使用方法:
點兩下 或 拉文件進來
如果用這兩種方法以外的其他方法來使用,可能會發生錯誤
@echo off
if "%~1" == "" goto main
set "wfiles=%cmdcmdline:"=%"
call set "wfiles=%%wfiles:*%~d0=%%"
call set "wfiles=%%wfiles:*%~d1=%%"
call set "wfiles=%%wfiles: %~d1=" "%~d1%%"
set wfiles="%~d1%wfiles%"
if "%cmdcmdline:~0,3%" == "cmd" call :ddd %wfiles%
if not "%cmdcmdline:~0,3%" == "cmd" set wfiles=%*
goto main
:ddd
cd/d "%~dp1"
goto :eof
::--------------------------------------------------------------
:main
echo 1 GB2312
echo 2 Big5
echo 3 Shift_JIS
echo 4 EUC-KR
echo 5 UTF-8
echo 6 Unicode
echo.
echo A --^> B
echo A=? (1-6)
set /p aaa=
echo B=? (1-6)
set /p bbb=
echo %aaa%|findstr /be "" >nul ||goto :eof
echo %bbb%|findstr /be "" >nul ||goto :eof
if "%aaa%" == "%bbb%" goto :eof
if not defined wfiles set /p wfiles=Files???
if not defined wfiles goto :eof
echo Set objFSO = CreateObject("Scripting.FileSystemObject") > MakeBOM.vbs
echo Set objFile = objFSO.CreateTextFile("Unicode.BOM",,true) >> MakeBOM.vbs
cscript //Nologo MakeBOM.vbs
md After_Convert\tmp
:loop
set vvv=%aaa%
if "%aaa%" == "6" set vvv=%bbb%
for /f "tokens=%vvv%" %%a in ("936 950 932 949 65001") do (
reg add "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /t REG_DWORD /d %%a /f >nul
)
if not "%aaa%" == "6" (
if not "%bbb%" == "6" (
start /wait /min cmd /u /c "for %%a in (%%wfiles%%) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp After_Convert\tmp\"%%~nxa""
set aaa=6
set wfiles=After_Convert\tmp\*
goto loop
)
)
if "%bbb%" == "6" (
start /wait /min cmd /u /c "for %%a in (%%wfiles%%) do copy Unicode.BOM tmpfile.tmp&type "%%~fa" >> tmpfile.tmp&move /y tmpfile.tmp After_Convert\"%%~nxa""
) else (
start /wait /min cmd /c "for %%a in (%%wfiles%%) do type "%%~fa" > After_Convert\"%%~nxa"")
reg delete "HKCU\Console\%%SystemRoot%%_System32_cmd.exe" /v CodePage /f >nul
del MakeBOM.vbs
del Unicode.BOM
rd After_Convert\tmp /s /q
start After_Convert
Last edited by mkd on 2008-6-2 at 10:35 PM ]