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 :

[Batch] Rechercher/Remplacer dans un fichier, sans commande Switch.exe


Sujet :

Scripts/Batch

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 25
    Points
    25
    Par défaut [Batch] Rechercher/Remplacer dans un fichier, sans commande Switch.exe
    Bonjour à tous,

    Je cherche depuis quelques temps une façon de faire un "simple" rechercher/remplacer dans un fichier, avec un .bat.
    J'ai tout d'abord trouvé la commande Switch.exe qui fait ça à merveille... sur mon poste. Le problème c'est qu'elle ne passe pas sur le serveur sur lequel j'en ai besoin.
    J'ai le message d'erreur suivant :
    "File fichier.txt cannot be written to!"

    Après plusieurs tests, je peux dire que ce n'est ni un problème de droit, ni un problème d'accent ou de caractères spéciaux...

    J'ai également essayé avec un script vbs (et même Javascript) mais ceux-ci sont également bloqués sur le serveur. Et là, ce n'est pas trop discutable je crois.

    Je me suis donc résigné à faire cela directement dans mon .bat, avec une boucle sur chaque ligne du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for /f "delims=" %%l in ('type "%%f"') do ( commandes... )
    où %%f est le nom de mon fichier provenant d'une autre boucle.
    Le problème est que le ficher que je traite contient un point d'exclamation (!) et mon fichier de sorti ne l'a plus. A part ça, mon rechercher/remplacer est nickel... Je suppose que ça vient du fait que ce "!" est utilisé pour les variables (à cause de setlocal enableDelayedExpansion). Je précise que les "!" dans le fichier d'origine ne peuvent pas être "échappés" car il va y avoir de nouveaux fichiers régulièrement...

    Donc pour résumé :
    - Une commande telle que switch.exe peut-elle être bloquée sur un serveur ?
    - Mon problème de "!" a-t-il une solution ?
    - Ai-je une solution alternative à laquelle je n'ai pas pensé ?

    Merci à tous

    ShigeruM

  2. #2
    Membre averti

    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
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Peux tu regarder si la commande suivante résoud ton problème ? :

    gsar, ver 1.10 -- Copyright (C) 1992-96 Tormod Tjaberg & Hans Peter Verne

    Usage: gsar [options] [infile(s)] [outfile]
    Options are:
    -s<string> Search string
    -r[string] Replace string. Use '-r' to delete the search string from the file
    -i Ignore case difference when comparing strings
    -B just display search & replace Buffers
    -f Force overwrite of an existing output file
    -o Overwrite the existing input file
    -c[n] show textual Context of match, 'n' is number of bytes in context
    -x[n] show context as a heX dump, 'n' is number of bytes in context
    -b display Byte offsets of matches in file
    -l only List filespec and number of matches (default)
    -h suppress display of filespec when displaying context or offsets
    -du convert a DOS ASCII file to UNIX (strips carriage return)
    -ud convert a UNIX ASCII file to DOS (adds carriage return)
    -F 'Filter' mode, input from stdin and eventual output to stdout
    -G display the GNU General Public Licence

    Ctrl characters may be entered by using a ':' in the string followed by the
    ASCII value of the character. The value is entered using ':' followed by three
    decimal digits or '' followed by two hex numbers. To enter ':' use '::'

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Bonjour et merci pour cette réponse rapide
    Sur mon poste, "'gsar' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commandes."...
    Il faut l'installer c'est bien ça ? Même si ça marche sur mon poste, je ne pourrais pas le faire sur le serveur... A moins que je n'ai pas compris le fonctionnement...

  4. #4
    Membre averti

    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
    Points : 382
    Points
    382
    Billets dans le blog
    1
    Par défaut
    Tu trouveras facilement GSar sur le net, il est libre et ouvert. Copie le sur ton serveur et utilise le, c'est ce qu'il y a de plus simple pour faire du search and replace.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 14
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup mais je ne peux pas faire tout ce que je veux sur le serveur.

    Mais j'ai trouvé une solution alternative.
    Le switch.exe semble ne pas être compatible (en tout cas dans la version que j'ai) avec Windows Server 2003.

    J'ai trouvé une autre commande : search-replace.exe (http://hidalgoemmanuel.info/archives...e/details.html) qui passe. Elle est un peu plus lente mais au moins ça marche !

    En espérant que ce sujet pourra aider quelqu'un un d'autre un jour, je vous remercie

    Shigerum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rechercher/Remplacer dans un fichier texte externe
    Par Cmama dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/02/2010, 12h34
  2. Réponses: 3
    Dernier message: 11/06/2009, 17h49
  3. Rechercher/Remplacer dans un fichier excel
    Par godmich dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/01/2008, 09h12
  4. Afficher, rechercher et remplacer dans un fichier
    Par lynal dans le forum Langage
    Réponses: 1
    Dernier message: 13/06/2006, 21h24
  5. rechercher / remplacer dans fichier en hexa
    Par ratdegout dans le forum C++
    Réponses: 2
    Dernier message: 26/05/2006, 14h14

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