Browse Source

Correction d'un bug sur le caractère de fin de ligne de la dernière ligne
Ajout de l'option -a, pour n'afficher que le header/à propos.
Ajout d'un fichier de script PowerShell ps1, pour lancer le traitement du programme sur un dossier.
Ajout de la traduction en espagnol "Benvenuti a voi amici spagnoli!"

Aryx 2 years ago
parent
commit
26507edb78

BIN
DetectEncoding.v12.suo


+ 2 - 2
DetectEncoding/AssemblyTTempl.cs

@@ -6,6 +6,6 @@
 using System.Reflection;
 
 
-[assembly: AssemblyVersion("1.0.0.70")]
-[assembly: AssemblyFileVersion("1.0.0.70")]
+[assembly: AssemblyVersion("1.0.0.107")]
+[assembly: AssemblyFileVersion("1.0.0.107")]
 

+ 10 - 0
DetectEncoding/DetectEncoding.csproj

@@ -64,6 +64,11 @@
       <DesignTime>True</DesignTime>
       <DependentUpon>Resource_en-US.resx</DependentUpon>
     </Compile>
+    <Compile Include="constant\texts\Resource_es-ES.Designer.cs">
+      <DependentUpon>Resource_es-ES.resx</DependentUpon>
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+    </Compile>
     <Compile Include="dto\OutputConf.cs" />
     <Compile Include="dto\ProgramArgs.cs" />
     <Compile Include="exception\DetectEncodeException.cs" />
@@ -103,6 +108,10 @@
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resource_en-US.Designer.cs</LastGenOutput>
     </EmbeddedResource>
+    <EmbeddedResource Include="constant\texts\Resource_es-ES.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resource_es-ES.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
     <EmbeddedResource Include="constant\texts\Resource_fr-Fr.resx">
       <Generator>ResXFileCodeGenerator</Generator>
       <LastGenOutput>Resource_fr-Fr.Designer.cs</LastGenOutput>
@@ -110,6 +119,7 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="packages.config" />
+    <None Include="runForAFolder.ps1" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 

+ 1 - 1
DetectEncoding/DetectEncoding.csproj.user

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
-    <StartArguments>-f UTF16BE.txt -s 1 -c UTF16BE_NOBOM</StartArguments>
+    <StartArguments>-f "C:\Users\ARyx\Documents\Visual Studio 2013\Projects\DetectEncoding\DetectEncoding\DetectEncoding\bin\Debug\DOS.txt" -s 1 -c UTF8_NOBOM -e UNIX</StartArguments>
     <EnableUnmanagedDebugging>false</EnableUnmanagedDebugging>
   </PropertyGroup>
 </Project>

+ 10 - 1
DetectEncoding/Program.cs

@@ -21,7 +21,8 @@ namespace DetectEncoding
         {
             LangMgr.AddResourceManager("fr", Resource_fr_Fr.ResourceManager);
             LangMgr.AddResourceManager("en", Resource_en_US.ResourceManager);
-            //LangMgr.ForceCulture("fr");
+            LangMgr.AddResourceManager("es", Resource_es_ES.ResourceManager);
+            //LangMgr.ForceCulture("es");
             TranslateCliParser();
 
             ProgramParser argParser = new ProgramParser();
@@ -34,6 +35,14 @@ namespace DetectEncoding
                 ProgramArgs objArgs = argParser.ParseDirect(args);
 
                 MiscAppUtils.ConditionnalExecCode(objArgs.SilenceLevel, 1, ShowHeaderApp);
+                // N'affiche que le header
+                if (objArgs.IsShowAbout)
+                {
+                    Console.WriteLine(LangMgr.Instance["programMoreHelpOn"]);
+                    Console.WriteLine();
+                    batchExitCode = EnumExitCode.ABOUT_SHOWN;
+                    Environment.Exit(batchExitCode.ExitCode);
+                }
                 MiscAppUtils.ConditionnalWrtLine(objArgs.SilenceLevel, 2, " InputFile: {0}", objArgs.InputFileName);
 
                 // Détection encodage

+ 2 - 8
DetectEncoding/business/OutputFileWriter.cs

@@ -52,17 +52,11 @@ namespace DetectEncoding.business
                 using (StreamWriter sw = StreamUtils.GetStreamWriterFromEAppEncoding(outFileName, OutputEncoding))
                 {
                     String line = null;
-                    bool isFirstLine = true;
+
                     while ((line = sr.ReadLine()) != null)
                     {
-                        if (!isFirstLine)
-                        {
-                            sw.Write(OutputEol.EolChar);
-                        }
-
                         sw.Write(line);
-                        isFirstLine = false;
-
+                        sw.Write(OutputEol.EolChar);
                     }
                 }
             }

+ 23 - 1
DetectEncoding/business/parsing/ProgramParser.cs

@@ -16,7 +16,7 @@ namespace DetectEncoding.business.parsing
             LongOpt = "file",
             Description = LangMgr.Instance["parserOptFileDesc"],
             HasArgs = true,
-            IsMandatory = true,
+            IsMandatory = false,
             Name = "OptionFile"
         };
 
@@ -72,6 +72,16 @@ namespace DetectEncoding.business.parsing
             Name = "PatternedOutput"
         };
 
+        private readonly Option _optionAbout = new Option()
+        {
+            ShortOpt = "a",
+            LongOpt = "about",
+            Description = LangMgr.Instance["parserOptAboutDesc"],
+            HasArgs = false,
+            IsMandatory = false,
+            Name = "About"
+        };
+
 
         public ProgramParser()
         {
@@ -130,6 +140,7 @@ namespace DetectEncoding.business.parsing
             AddOption(_optionOutputFile);
             AddOption(_optionSilenceLevel);
             AddOption(_optionPatternedOutput);
+            AddOption(_optionAbout);
         }
 
         private ProgramArgs ParseTrt(Dictionary<string, Option> arg)
@@ -137,6 +148,13 @@ namespace DetectEncoding.business.parsing
             ProgramArgs p = new ProgramArgs();
             p.OutputEol = EnumEol.NONE;
 
+            // About
+            if (HasOption(_optionAbout, arg))
+            {
+                p.IsShowAbout = true;
+                return p;
+            }
+
             // Silence level and output-pattern sont mutuellement exclusive
             if (HasOption(_optionSilenceLevel, arg) && HasOption(_optionPatternedOutput, arg))
             {
@@ -144,6 +162,10 @@ namespace DetectEncoding.business.parsing
             }
 
             // Input File path
+            if (!HasOption(_optionFile, arg))
+            {
+                throw new CliParsingException(String.Format(LangMgr.Instance["cliparserOptMissingStr"], _optionFile.ShortOpt));
+            }
             string fileUrl = GetSingleOptionValue(_optionFile.Name, arg);
             string fullPath = Path.GetFullPath(fileUrl);
             if (!File.Exists(fullPath))

+ 2 - 0
DetectEncoding/constant/EnumExitCode.cs

@@ -6,6 +6,7 @@ namespace DetectEncoding.constant
     {
         public static readonly EnumExitCode DETECT_OK = new EnumExitCode("DETECT_OK", 0);
         public static readonly EnumExitCode DETECT_AND_REENC_OK = new EnumExitCode("DETECT_AND_REENC_OK", 1);
+        public static readonly EnumExitCode ABOUT_SHOWN = new EnumExitCode("ABOUT_SHOWN", 2);
 
 
         public static readonly EnumExitCode NO_ENC_FOUND = new EnumExitCode("NO_ENC_FOUND", 20);
@@ -26,6 +27,7 @@ namespace DetectEncoding.constant
             {
                 yield return DETECT_OK;
                 yield return DETECT_AND_REENC_OK;
+                yield return ABOUT_SHOWN;
                 yield return NO_ENC_FOUND;
                 yield return ERROR_PARAM_IN;
                 yield return ERROR_DETECT_ENC;

+ 11 - 2
DetectEncoding/constant/texts/Resource_en-US.Designer.cs

@@ -79,7 +79,7 @@ namespace DetectEncoding.constant.texts {
         }
         
         /// <summary>
-        ///   Recherche une chaîne localisée semblable à .
+        ///   Recherche une chaîne localisée semblable à Option -{0} is not present when it is mandatory..
         /// </summary>
         internal static string cliparserOptMissingStr {
             get {
@@ -106,6 +106,15 @@ namespace DetectEncoding.constant.texts {
         }
         
         /// <summary>
+        ///   Recherche une chaîne localisée semblable à Show an about text.
+        /// </summary>
+        internal static string parserOptAboutDesc {
+            get {
+                return ResourceManager.GetString("parserOptAboutDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Recherche une chaîne localisée semblable à Path of file to analyze.
         /// </summary>
         internal static string parserOptFileDesc {
@@ -187,7 +196,7 @@ namespace DetectEncoding.constant.texts {
         }
         
         /// <summary>
-        ///   Recherche une chaîne localisée semblable à Indicates a template for displaying treatments. Ex: [I_ENC] to display the encoding of the input file. Disable original standard output.
+        ///   Recherche une chaîne localisée semblable à Indicates a template for displaying treatments. Ex: [IN_ENC] to display the encoding of the input file. Disable original standard output.
         /// </summary>
         internal static string parserPatternedOutputDesc {
             get {

+ 5 - 2
DetectEncoding/constant/texts/Resource_en-US.resx

@@ -124,7 +124,7 @@
     <value />
   </data>
   <data name="cliparserOptMissingStr" xml:space="preserve">
-    <value />
+    <value>Option -{0} is not present when it is mandatory.</value>
   </data>
   <data name="cliparserRequiredStr" xml:space="preserve">
     <value />
@@ -132,6 +132,9 @@
   <data name="cliparserSyntaxTplStr" xml:space="preserve">
     <value />
   </data>
+  <data name="parserOptAboutDesc" xml:space="preserve">
+    <value>Show an about text</value>
+  </data>
   <data name="parserOptFileDesc" xml:space="preserve">
     <value>Path of file to analyze</value>
   </data>
@@ -160,7 +163,7 @@
     <value>The -s option must be an integer from 0 to 2. '{0}' provides.</value>
   </data>
   <data name="parserPatternedOutputDesc" xml:space="preserve">
-    <value>Indicates a template for displaying treatments. Ex: [I_ENC] to display the encoding of the input file. Disable original standard output</value>
+    <value>Indicates a template for displaying treatments. Ex: [IN_ENC] to display the encoding of the input file. Disable original standard output</value>
   </data>
   <data name="programMoreHelpOn" xml:space="preserve">
     <value> More help on http://wolfaryx.fr/?p=3041</value>

+ 243 - 0
DetectEncoding/constant/texts/Resource_es-ES.Designer.cs

@@ -0,0 +1,243 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     Ce code a été généré par un outil.
+//     Version du runtime :4.0.30319.42000
+//
+//     Les modifications apportées à ce fichier peuvent provoquer un comportement incorrect et seront perdues si
+//     le code est régénéré.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace DetectEncoding.constant.texts {
+    using System;
+    
+    
+    /// <summary>
+    ///   Une classe de ressource fortement typée destinée, entre autres, à la consultation des chaînes localisées.
+    /// </summary>
+    // Cette classe a été générée automatiquement par la classe StronglyTypedResourceBuilder
+    // à l'aide d'un outil, tel que ResGen ou Visual Studio.
+    // Pour ajouter ou supprimer un membre, modifiez votre fichier .ResX, puis réexécutez ResGen
+    // avec l'option /str ou régénérez votre projet VS.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resource_es_ES {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resource_es_ES() {
+        }
+        
+        /// <summary>
+        ///   Retourne l'instance ResourceManager mise en cache utilisée par cette classe.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DetectEncoding.constant.texts.Resource_es-ES", typeof(Resource_es_ES).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Remplace la propriété CurrentUICulture du thread actuel pour toutes
+        ///   les recherches de ressources à l'aide de cette classe de ressource fortement typée.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à también.
+        /// </summary>
+        internal static string cliparserAlsoStr {
+            get {
+                return ResourceManager.GetString("cliparserAlsoStr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à La opción -{0} debe usarse con un argumento..
+        /// </summary>
+        internal static string cliparserOptArgMissingStr {
+            get {
+                return ResourceManager.GetString("cliparserOptArgMissingStr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à La opción -{0} no aparece cuando es obligatoria..
+        /// </summary>
+        internal static string cliparserOptMissingStr {
+            get {
+                return ResourceManager.GetString("cliparserOptMissingStr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Obligatorio. .
+        /// </summary>
+        internal static string cliparserRequiredStr {
+            get {
+                return ResourceManager.GetString("cliparserRequiredStr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à  Sintaxis: {0} OPCIONES.
+        /// </summary>
+        internal static string cliparserSyntaxTplStr {
+            get {
+                return ResourceManager.GetString("cliparserSyntaxTplStr", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Visualizza il &quot;circa&quot; del programma.
+        /// </summary>
+        internal static string parserOptAboutDesc {
+            get {
+                return ResourceManager.GetString("parserOptAboutDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Ruta del archivo a analizar.
+        /// </summary>
+        internal static string parserOptFileDesc {
+            get {
+                return ResourceManager.GetString("parserOptFileDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Fichero de destino para la conversión. Si se omite, el archivo tendrá el aspecto de [Nombre de archivo de entrada]-Salida[Extensión de archivo de entrada]. Si es igual a &quot;SAME_AS_INPUT&quot; entonces el mismo archivo que la opción -f.
+        /// </summary>
+        internal static string parserOptOutputFileDesc {
+            get {
+                return ResourceManager.GetString("parserOptOutputFileDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Ajusta el número de elementos que se muestran. 0: se muestra todo (como si -s estuviera ausente), 1: sólo líneas de procesamiento, 2: no se muestra nada.
+        /// </summary>
+        internal static string parserOptSilenceLevelDesc {
+            get {
+                return ResourceManager.GetString("parserOptSilenceLevelDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Convierte la codificación del archivo analizado en una codificación de destino: {0}. La conversión sólo es posible si se ha detectado la codificación de origen..
+        /// </summary>
+        internal static string parserOptTargetEncDesc {
+            get {
+                return ResourceManager.GetString("parserOptTargetEncDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Convierte el carácter de fin de línea : {0}. La conversión sólo es posible si se ha detectado la codificación de origen..
+        /// </summary>
+        internal static string parserOptTargetEolDesc {
+            get {
+                return ResourceManager.GetString("parserOptTargetEolDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Error en las opciones de entrada del programa. Las opciones -{0} y -{1} no se pueden utilizar al mismo tiempo..
+        /// </summary>
+        internal static string parserParseErrorSandPin {
+            get {
+                return ResourceManager.GetString("parserParseErrorSandPin", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à El tipo de carácter de fin de línea {0} no existe. Tipo de posibles caracteres de fin de línea: {1}.
+        /// </summary>
+        internal static string parserParseTrtEolNotExistTxt {
+            get {
+                return ResourceManager.GetString("parserParseTrtEolNotExistTxt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à El archivo {0} no existe.
+        /// </summary>
+        internal static string parserParseTrtFileNotFoundTxt {
+            get {
+                return ResourceManager.GetString("parserParseTrtFileNotFoundTxt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à La opción -s debe ser un número entero de 0 a 2. provee..
+        /// </summary>
+        internal static string parserParseTrtSilenceLvlWrontTxt {
+            get {
+                return ResourceManager.GetString("parserParseTrtSilenceLvlWrontTxt", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à Indica una modelo para visualizar tratamientos. Ej: [IN_ENC] para mostrar la codificación del archivo de entrada. No visualiza la salida clásica.
+        /// </summary>
+        internal static string parserPatternedOutputDesc {
+            get {
+                return ResourceManager.GetString("parserPatternedOutputDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à  Más ayuda en http://wolfaryx.fr/?p=3041.
+        /// </summary>
+        internal static string programMoreHelpOn {
+            get {
+                return ResourceManager.GetString("programMoreHelpOn", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à  No se detecta codificación.
+        /// </summary>
+        internal static string programNoEncodingFound {
+            get {
+                return ResourceManager.GetString("programNoEncodingFound", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à  por Aryx - WolfAryx informatique -.
+        /// </summary>
+        internal static string programShowHeaderAuthor {
+            get {
+                return ResourceManager.GetString("programShowHeaderAuthor", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Recherche une chaîne localisée semblable à  Detección de codificación basada en el trabajo de AutoIt Consulting :.
+        /// </summary>
+        internal static string programShowHeaderDisc {
+            get {
+                return ResourceManager.GetString("programShowHeaderDisc", resourceCulture);
+            }
+        }
+    }
+}

+ 180 - 0
DetectEncoding/constant/texts/Resource_es-ES.resx

@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <data name="cliparserAlsoStr" xml:space="preserve">
+    <value>también</value>
+  </data>
+  <data name="cliparserOptArgMissingStr" xml:space="preserve">
+    <value>La opción -{0} debe usarse con un argumento.</value>
+  </data>
+  <data name="cliparserOptMissingStr" xml:space="preserve">
+    <value>La opción -{0} no aparece cuando es obligatoria.</value>
+  </data>
+  <data name="cliparserRequiredStr" xml:space="preserve">
+    <value>Obligatorio. </value>
+  </data>
+  <data name="cliparserSyntaxTplStr" xml:space="preserve">
+    <value> Sintaxis: {0} OPCIONES</value>
+  </data>
+  <data name="parserOptAboutDesc" xml:space="preserve">
+    <value>Visualizza il "circa" del programma</value>
+  </data>
+  <data name="parserOptFileDesc" xml:space="preserve">
+    <value>Ruta del archivo a analizar</value>
+  </data>
+  <data name="parserOptOutputFileDesc" xml:space="preserve">
+    <value>Fichero de destino para la conversión. Si se omite, el archivo tendrá el aspecto de [Nombre de archivo de entrada]-Salida[Extensión de archivo de entrada]. Si es igual a "SAME_AS_INPUT" entonces el mismo archivo que la opción -f</value>
+  </data>
+  <data name="parserOptSilenceLevelDesc" xml:space="preserve">
+    <value>Ajusta el número de elementos que se muestran. 0: se muestra todo (como si -s estuviera ausente), 1: sólo líneas de procesamiento, 2: no se muestra nada</value>
+  </data>
+  <data name="parserOptTargetEncDesc" xml:space="preserve">
+    <value>Convierte la codificación del archivo analizado en una codificación de destino: {0}. La conversión sólo es posible si se ha detectado la codificación de origen.</value>
+  </data>
+  <data name="parserOptTargetEolDesc" xml:space="preserve">
+    <value>Convierte el carácter de fin de línea : {0}. La conversión sólo es posible si se ha detectado la codificación de origen.</value>
+  </data>
+  <data name="parserParseErrorSandPin" xml:space="preserve">
+    <value>Error en las opciones de entrada del programa. Las opciones -{0} y -{1} no se pueden utilizar al mismo tiempo.</value>
+  </data>
+  <data name="parserParseTrtEolNotExistTxt" xml:space="preserve">
+    <value>El tipo de carácter de fin de línea {0} no existe. Tipo de posibles caracteres de fin de línea: {1}</value>
+  </data>
+  <data name="parserParseTrtFileNotFoundTxt" xml:space="preserve">
+    <value>El archivo {0} no existe</value>
+  </data>
+  <data name="parserParseTrtSilenceLvlWrontTxt" xml:space="preserve">
+    <value>La opción -s debe ser un número entero de 0 a 2. provee.</value>
+  </data>
+  <data name="parserPatternedOutputDesc" xml:space="preserve">
+    <value>Indica una modelo para visualizar tratamientos. Ej: [IN_ENC] para mostrar la codificación del archivo de entrada. No visualiza la salida clásica</value>
+  </data>
+  <data name="programMoreHelpOn" xml:space="preserve">
+    <value> Más ayuda en http://wolfaryx.fr/?p=3041</value>
+  </data>
+  <data name="programNoEncodingFound" xml:space="preserve">
+    <value> No se detecta codificación</value>
+  </data>
+  <data name="programShowHeaderAuthor" xml:space="preserve">
+    <value> por Aryx - WolfAryx informatique -</value>
+  </data>
+  <data name="programShowHeaderDisc" xml:space="preserve">
+    <value> Detección de codificación basada en el trabajo de AutoIt Consulting :</value>
+  </data>
+</root>

+ 11 - 2
DetectEncoding/constant/texts/Resource_fr-Fr.Designer.cs

@@ -79,7 +79,7 @@ namespace DetectEncoding.constant.texts {
         }
         
         /// <summary>
-        ///   Recherche une chaîne localisée semblable à L&apos;option -{0} absente alors qu&apos;elle est obligatoire..
+        ///   Recherche une chaîne localisée semblable à L&apos;option -{0} est absente alors qu&apos;elle est obligatoire..
         /// </summary>
         internal static string cliparserOptMissingStr {
             get {
@@ -106,6 +106,15 @@ namespace DetectEncoding.constant.texts {
         }
         
         /// <summary>
+        ///   Recherche une chaîne localisée semblable à Affiche le texte &quot;à propos&quot; du programme.
+        /// </summary>
+        internal static string parserOptAboutDesc {
+            get {
+                return ResourceManager.GetString("parserOptAboutDesc", resourceCulture);
+            }
+        }
+        
+        /// <summary>
         ///   Recherche une chaîne localisée semblable à Chemin du fichier à analyser.
         /// </summary>
         internal static string parserOptFileDesc {
@@ -187,7 +196,7 @@ namespace DetectEncoding.constant.texts {
         }
         
         /// <summary>
-        ///   Recherche une chaîne localisée semblable à Indique un modèle pour l&apos;affichage des traitements. Ex: [I_ENC] pour afficher l&apos;encodage du fichier en entré. N&apos;affiche pas la sortie classique.
+        ///   Recherche une chaîne localisée semblable à Indique un modèle pour l&apos;affichage des traitements. Ex: [IN_ENC] pour afficher l&apos;encodage du fichier en entré. N&apos;affiche pas la sortie classique.
         /// </summary>
         internal static string parserPatternedOutputDesc {
             get {

+ 5 - 2
DetectEncoding/constant/texts/Resource_fr-Fr.resx

@@ -124,7 +124,7 @@
     <value>L'option -{0} doit être utilisée avec un argument.</value>
   </data>
   <data name="cliparserOptMissingStr" xml:space="preserve">
-    <value>L'option -{0} absente alors qu'elle est obligatoire.</value>
+    <value>L'option -{0} est absente alors qu'elle est obligatoire.</value>
   </data>
   <data name="cliparserRequiredStr" xml:space="preserve">
     <value>Obligatoire. </value>
@@ -132,6 +132,9 @@
   <data name="cliparserSyntaxTplStr" xml:space="preserve">
     <value>  Syntaxe : {0} OPTIONS</value>
   </data>
+  <data name="parserOptAboutDesc" xml:space="preserve">
+    <value>Affiche le texte "à propos" du programme</value>
+  </data>
   <data name="parserOptFileDesc" xml:space="preserve">
     <value>Chemin du fichier à analyser</value>
   </data>
@@ -160,7 +163,7 @@
     <value>L'option -s doit être un entier de 0 à 2. '{0}' fournit.</value>
   </data>
   <data name="parserPatternedOutputDesc" xml:space="preserve">
-    <value>Indique un modèle pour l'affichage des traitements. Ex: [I_ENC] pour afficher l'encodage du fichier en entré. N'affiche pas la sortie classique</value>
+    <value>Indique un modèle pour l'affichage des traitements. Ex: [IN_ENC] pour afficher l'encodage du fichier en entré. N'affiche pas la sortie classique</value>
   </data>
   <data name="programMoreHelpOn" xml:space="preserve">
     <value> Plus d'aide sur http://wolfaryx.fr/?p=3041</value>

+ 2 - 0
DetectEncoding/dto/ProgramArgs.cs

@@ -16,5 +16,7 @@ namespace DetectEncoding.dto
         public string OutputFileName { get; set; }
         public int SilenceLevel { get; set; }
         public string OutputPattern { get; set; }
+
+        public bool IsShowAbout { get; set; }
     }
 }

+ 47 - 0
DetectEncoding/runForAFolder.ps1

@@ -0,0 +1,47 @@
+Param(
+  [Parameter(Mandatory=$True)]
+   [string]$folderToAnalyse,
+   [string]$filter="*.*",
+   [ValidateSet('UTF8_BOM', 'UTF8_NOBOM', 'ANSI', 'UTF16LE', 'UTF16BE', 'UTF16LE_NOBOM', 'UTF16BE_NOBOM', 'ASCII')]
+   [string]$convertTo,
+   [ValidateSet('MACOS', 'UNIX', 'DOS')]
+   [string]$endOfLineTo,
+   [string]$outputPattern,
+   [int]$silenceLevel=1,
+   [switch]$replaceOriginalFile,
+   [switch]$recurse
+
+)
+
+$files=@();
+if ($recurse) {
+    $files=@(Get-ChildItem -Path $folderToAnalyse -filter $filter -recurse);
+} else {
+    $files=@(Get-ChildItem -Path $folderToAnalyse -filter $filter);
+}
+
+$arguments="-s "+$silenceLevel+" ";
+if ($convertTo.Length -gt 0) {
+    $arguments += "-c "+$convertTo +" ";
+}
+if ($endOfLineTo.Length -gt 0) {
+    $arguments += "-e "+$endOfLineTo +" ";
+}
+
+if ($replaceOriginalFile) {
+    $arguments += "-o `"SAME_AS_INPUT`" ";
+}
+
+if ($outputPattern.Length -gt 0) {
+    $arguments += "-p "+$outputPattern +" ";
+}
+
+Start-Process -FilePath ".\DetectEncoding.exe" -NoNewWindow -Wait -ArgumentList "-a";
+
+foreach($file in $files) {
+    $argumentsForFile = $arguments+"-f `""+$file.fullname+"`""; 
+            
+
+    Start-Process -FilePath ".\DetectEncoding.exe" -NoNewWindow -Wait -ArgumentList $argumentsForFile;
+    write-host "";
+}