IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Fonctions utiles pour des chaînes de caractères [Trucs & Astuces]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut Fonctions utiles pour des chaînes de caractères
    salut,

    voici quelques fonctions pour traiter les chaînes de caractères:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    @echo off & setlocal enabledelayedexpansion enableextensions
     
    set str=%*
    if not defined str (set /p str=Entrez une chaine: %)
    echo.
     
    call :length  "%str%"
    call :count   "%str%"
    call :reverse "%str%"
    call :ucase   "%str%"
    call :2hexa   "%str%"
    call :cword   "%str%"
    call :def     "%str%"
    call :defRev  "%str%"
    call :DecToHex1 2657
    call :DecToHex2 2657
    call :fileRev  "my file.txt"
    
     
    set length
    set [
    set reverse
    set ucase
    set hexa
    set cword
    set $hex1
    set $hex2
     
    pause & endlocal & goto:eof
     
     
    :length
    for /f "tokens=1* delims=[]" %%a in ('
      "%comspec% /u /c echo:%~1|more|find /n /v """
     ') do set /a "length=%%a-4"
    goto:eof
     
    :count
    for /f %%: in ('
      "%comspec% /u /c echo:%~1|more|sort"
     ') do Set /A "[%%:]+=1"
    goto:eof
     
    :reverse
    for /f "tokens=1* delims=:" %%a in ('
        "%comspec% /u /c echo:%~1|more|findstr /o ."
     ') do set "reverse=%%b!reverse!"
    goto:eof
     
    :ucase
    for /f "tokens=1* delims=µ" %%a in ('
        "tree \µµµ%1|find ":\""
      ') do set "ucase=%%b"
    goto:eof
     
    :2hexa
    <nul>$asc$ set/p"=%~1"
    for /l %%i in (1 1 %length%) do <nul>>$hex$ set/p"=µ"
    for /f "skip=1 tokens=3" %%i in ('fc /b $hex$ $asc$') do set "hexa=!hexa!%%i-"
    set "hexa=%hexa:~0,-1%" & del $asc$ $hex$
    goto:eof
     
    :cword
    Set/Acword=0,cword=1+%str: =,cword+=1+%
    goto:eof
     
    :def
    for /l %%a in (0 1 %length%) do (
      for /l %%i in (1 1 1000) do >nul ver
        <nul call Set/p"=%%str:~%%a,1%%"
    )
    echo.
    goto:eof
     
    :defRev
    for /l %%a in (%length% -1 0) do (
      for /l %%i in (1 1 1000) do >nul ver
        <nul call Set/p"=%%str:~%%a,1%%"
    )
    echo.
    goto:eof
    
    :DecToHex1
    ::
    :  Idée de Carlos (voir source)
    ::
    set $hex1=0x0
    for /f "tokens=1* delims=0=" %%a in ('"%comspec% /cexit/b %1&set;|find "^=ExitCode^=""') do Set $hex1=0x%%b
    goto :eof
    
    
    :DecToHex2
    ::
    :  Idée de 01MDM (voir source)
    ::
    for /f "tokens=1,3" %%i in ('^(
      reg add hkcu\console /v $hex2 /t reg_dword /d %1 /f ^&
      reg query hkcu\console /v $hex2  ^&
      reg delete hkcu\console /v $hex2 /f
     ^)^|find "REG_DWORD"') do Set %%i=%%j
    goto:eof
    
    :fileRev
    echo.&echo     ##########[ BEGIN ]#######################
    echo.
    for /f "tokens=1* delims=][" %%s in ('find /n /v "" ^< %1') do (
       Set "table[%%s]=%%t"
       if not defined table[%%s] set table[%%s]=µµµ
       Set nline=%%s
    )
    for /l %%i in (%nline% -1 1) Do (
      for /f "tokens=1* delims=µ=" %%o in ('"2>nul set table[%%i]"') do echo=%%p
    )
    echo.&echo      ##########[ END ]#########################
    echo. 
    goto:eof


    fonction Length: affiche le nombre de caractères saisie

    fonction count: compte le nombre de lettre dans la chaine

    fonction reverse: inverse la chaine

    fonction ucase: transforme la chaîne en majuscule

    fonction 2hexa: affiche la valeur hexadecimal de chaque lettre

    fonction cword: compter les mots dans "une chaîne de caractères"

    fonction def: défilement de la chaine de caractères

    fonction defRev: défilement inverse de la chaine

    fonction DecToHex1: Converti du decimal à l'hexadecimal

    fonction DecToHex2: Converti du decimal à l'hexadecimal

    fonction fileRev: lire un fichier à l'envers

  2. #2
    Membre chevronné

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Billets dans le blog
    1
    Par défaut
    Excellent, cela devrait être ajouter dans la FAQ.

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2008
    Messages : 240
    Par défaut
    Hello,
    oui je rejoins john.fender à inclure dans la FAQ. Bravo pour cette astuce.

    Elle va aider beaucoup de Batcheurs.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2008
    Messages : 252
    Par défaut
    Nice !

    Thx I'm_HERE

  5. #5
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    merci
    le but de cette petit contribution est d'encourager d'autres membres à poster d'autres fonctions utiles..enfin j'espère..

    EDIT: Ajout de deux nouvelles fonctions de conversion Base(10)/Base(16)
    ces fonctions sont inspirées des idée de Carlos et 01MDM
    source


    PS: petite correction du code de la fonction ecToHex1
    pour ne pas avoir de conflit avec la variable =ExitCodeAscii

    pour voir les variables =EXitCode* tapez dans une invite de commandes ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /l %a in (33 1 126) do @(<nul set/p=%a&%comspec% /cexit/b %a&set;|find /i "=exit")

  6. #6
    Membre chevronné

    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Décembre 2003
    Messages
    333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 333
    Billets dans le blog
    1
    Par défaut
    Ca manque quand même d'une fonction pour compter les lignes je trouve

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/03/2014, 18h35
  2. Réponses: 2
    Dernier message: 03/02/2014, 02h25
  3. [ASTUCES] fonctions utiles pour des chaînes de caractères
    Par I'm_HERE dans le forum FAQs Windows
    Réponses: 1
    Dernier message: 13/04/2010, 11h34
  4. Réponses: 2
    Dernier message: 11/10/2007, 17h36
  5. Réponses: 5
    Dernier message: 15/02/2005, 18h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo