' ---------------------------------------------------------- ' Script de Conversion ANSI -> OEM ' ' Syntaxe: ' oem2ansi ' : fichier source (texte ANSI) ' : fichier destination (texte OEM) ' ' JC BELLAMY © 2002 ' ---------------------------------------------------------- Dim ansi ansi=array( _ "00","01","02","03","04","05","06","07","08","09","0A","0B","0C","0D","0E","0F", _ "10","11","12","13","14","15","16","17","18","19","1A","1B","1C","1D","1E","1F", _ "20","21","22","23","24","25","26","27","28","29","2A","2B","2C","2D","2E","2F", _ "30","31","32","33","34","35","36","37","38","39","3A","3B","3C","3D","3E","3F", _ "40","41","42","43","44","45","46","47","48","49","4A","4B","4C","4D","4E","4F", _ "50","51","52","53","54","55","56","57","58","59","5A","5B","5C","5D","5E","5F", _ "60","61","62","63","64","65","66","67","68","69","6A","6B","6C","6D","6E","6F", _ "70","71","72","73","74","75","76","77","78","79","7A","7B","7C","7D","7E","7F", _ "5F","5F","27","9F","22","2E","C5","CE","5E","25","53","3C","4F","5F","5A","5F", _ "5F","27","27","22","22","07","2D","2D","7E","54","73","3E","6F","5F","7A","59", _ "FF","AD","BD","9C","CF","BE","DD","F5","F9","B8","A6","AE","AA","F0","A9","EE", _ "F8","F1","FD","FC","EF","E6","F4","FA","F7","FB","A7","AF","AC","AB","F3","A8", _ "B7","B5","B6","C7","8E","8F","92","80","D4","90","D2","D3","DE","D6","D7","D8", _ "D1","A5","E3","E0","E2","E5","99","9E","9D","EB","E9","EA","9A","ED","E8","E1", _ "85","A0","83","C6","84","86","91","87","8A","82","88","89","8D","A1","8C","8B", _ "D0","A4","95","A2","93","E4","94","F6","9B","97","A3","96","81","EC","E7","98") ForReading = 1 ForWriting = 2 Dim args, fso, fsrce, fdest Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set args = Wscript.Arguments ' Conversion OEM -> ANSI If args.count<2 Then strFullName =lcase(WScript.FullName) i=InStr(1,strFullName,".exe",1) j=InStrRev(strFullName,"\",i,1) strCommand=Mid(strFullName,j+1,i-j-1) if strCommand<>"cscript" then Mess= "Conversion ANSI -> OEM" & VBCRLF Mess=Mess & "JCB © 2002" & VBCRLF Mess=Mess & "----------------------" & VBCRLF Mess=Mess & "Syntaxe : " & VBCRLF Mess=Mess & " ansi2oem " & VBCRLF Mess=Mess & " : fichier source (texte ANSI)" & VBCRLF Mess=Mess & " : fichier destination (texte OEM)" & VBCRLF Mess=Mess & "NB: pour utiliser les flux standards 'stdin' et 'stdout'," & VBCRLF Mess=Mess & " le moteur de script par défaut doit être cscript.exe" & VBCRLF Mess=Mess & " Cela s'obtient par la commande : " & VBCRLF Mess=Mess & " cscript //H:CScript //S /Nologo" & VBCRLF & VBCRLF Mess=Mess & "Si le script récupère en entrée la sortie d'un autre logiciel (piping)," & VBCRLF Mess=Mess & "il faut indiquer explicitement 'cscript'" & VBCRLF Mess=Mess & "Exemple :" & VBCRLF Mess=Mess & "c:\>appliansi.exe | cscript ansi2oem.vbs > test.txt" & VBCRLF & VBCRLF wscript.echo Mess wscript.quit else Pipe=true Set fsrce = WScript.StdIn Set fdest = WScript.StdOut end if else Pipe=false srce=args(0) dest=args(1) If not fso.FileExists(srce) Then Mess="Le fichier " & srce & " n'existe pas" wscript.echo Mess wscript.quit End If Set fsrce=fso.OpenTextFile(srce, ForReading) Set fdest=fso.OpenTextFile(dest, ForWriting,true) End If While not fsrce.AtEndOfStream oldline=fsrce.ReadLine newline="" For i = 1 To len(oldline) oldc=asc(mid(oldline,i,1)) newc=ansi(oldc) newline=newline & chr(hextobyte(newc)) Next fdest.WriteLine newline Wend fdest.close fsrce.close If not pipe Then wscript.echo "Conversion terminée" Wscript.quit ' Utilitaires de conversion hexadécimale ' ------------------------------------- Function hextobyte(s) c1=Left(s,1) c2=Right(s,1) hextobyte=hextobin(c1)*16+hextobin(c2) End Function ' ------------------------------------- Function hextobin(c) Select Case c Case "0","1","2","3","4","5","6","7","8","9" hextobin=asc(c)-asc("0") Case else hextobin=asc(c)-asc("A")+10 End Select End Function ' -------------------------------------