Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2716 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Automatiser save file en codage ANSI

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Batch] Automatiser save file en codage ANSI

n°1351357
PepMat
Posté le 21-04-2006 à 16:09:53  profilanswer
 

Bonjour,
 
Je vous expose mon problème :
 
Je veux automatiser une procédure de rapatriement de fichier en local par ftp.
Jusque là, pas de problème.
 
Les fichiers que je récupère sont des fichiers sans extension (mais qui contiennent du texte) générés par un programme.
Le programme me génére toujours dans ces fichiers deux caractères spéciaux aléatoires au début de chaque ligne du fichier.  
Ces caractères ne sont pas voulus et je dois faire des rechercher/remplacer pour les supprimmer dans chaque fichier.
 
Ne pouvant utiliser que du batch XP (pas de Shell), j'ai opté pour un FOR /F pour ensuite découper mes lignes.
Le troisième caractère de chaque ligne étant toujours un zéro, voici la partie correspondante de mon batch :
 

Code :
  1. FOR /F "TOKENS=1,* DELIMS=0" %%a in (%file%) do echo 0%%b >> %file%V2


 
A priori mon code me semblait potable, et pourtant rien ne se passait ...
 
j'ai compris un peu plus tard que le fichier que je récupérais devait être de type spécial (Unicode a priori), et le FOR /F ne semble pas marcher sur ce type de codage...
 
Du coup en enregistrant manuellement mon fichier avec NotePad en ANSI, tout marche impec.
 
Mais il me faut encore automatiser cette procédure ...
 
Comment effectuer un enregistrement spécial avec paramètres (ici Codage = ANSI) avec un batch sous XP ?
 
J'espère que vous aurez des idées et que vous m'en ferrez part,
je vous en remercie par avance.
 

mood
Publicité
Posté le 21-04-2006 à 16:09:53  profilanswer
 

n°1352415
Gontrand2
Posté le 23-04-2006 à 23:03:14  profilanswer
 

Bonjour,
 
Simplement comme suit ...
type fichierUni.txt > fichierAnsi.txt

n°1352488
Taz
bisounours-codeur
Posté le 24-04-2006 à 07:55:26  profilanswer
 

transfert FTP en mode binaire ?
 
c'est quoi tes deux caractères par hasard ?

n°1352496
PepMat
Posté le 24-04-2006 à 09:09:59  profilanswer
 

Gontrand2 a écrit :

Bonjour,
 
Simplement comme suit ...
type fichierUni.txt > fichierAnsi.txt


 
j'ai essayé cette manip que j'avais vu quelque part dans ce forum,
mais ça n'a pas l'air de marcher.
 

Code :
  1. type fichierUni > temp.txt
  2. FOR /F "TOKENS=1,* DELIMS=0" %%a in (temp.txt) do echo 0%%b > fichierSortie


 
temp.txt étant un fichier vide enregistré en ANSI, la manip ci dessus ne marche pas  
(le FOR /F ne se fait pas, rien ne se passe, mis à part la copie du contenu du fichier entrée dans le temp),  
alors que quand j'enregistre mon fichier de départ en ANSI directement à la main le FOR /F passe.
 
est-ce que le fait que mon fichier de départ n'ai pas d'extension peut causer des problèmes ?  
 

Taz a écrit :

transfert FTP en mode binaire ?
 
c'est quoi tes deux caractères par hasard ?


 
J'ai déjà essayé de creuser sur le mode de transfert du fichier en FTP,
mais je suis en mode ASCII et pas en mode Binaire (en mode binaire c'est pire)
L'help de mon server semble me dire que j'ai d'autres options de transfert que ces deux là, mais je n'arrive pas à les activer (Ex : EBCDIC, DBCS-ASCII, CCSID ...)
 
Des caractères spéciaux générés  au début de chaque ligne de chaque fichier,
Ils sont différents suivant les fichiers mais se sont les mêmes devant chaque ligne de chaque fichier.
 
Blocnote les interprète souvent comme des espaces ou des signes de ponctuation  
et wordpad en transcrit la plupart en 'carrés'.

n°1352535
Taz
bisounours-codeur
Posté le 24-04-2006 à 10:34:35  profilanswer
 

et ils viennent d'où ces caractères ? pour le mode binaire c'est pire ? t'as un windows d'un côté et en face, t'as quoi ?

n°1352622
PepMat
Posté le 24-04-2006 à 12:22:09  profilanswer
 

Taz a écrit :

et ils viennent d'où ces caractères ? pour le mode binaire c'est pire ? t'as un windows d'un côté et en face, t'as quoi ?


 
Les caractères sont générés par un programme sur lequel je n'ai aucun droit de modification.
Je ne sais pas pourquoi ces caractères apparaissent mais en tout cas ça ne depend pas de moi.
 
Si je récupère mes fichiers en mode binaire, déjà ils sont beaucoup plus gros (normal) et mettent donc beaucoup plus de temps à se transferer mais en plus ils sont illisibles (remplis de carrés avec notepad).
 
Mon poste client est un windows xp et je récupère des fichiers sur un server AS400 par FTP.

n°1352626
wackevat
Posté le 24-04-2006 à 12:28:58  profilanswer
 

Si ce n'est pas secret, tu peux poster un exemple de fichier ?

n°1352635
PepMat
Posté le 24-04-2006 à 12:51:55  profilanswer
 

wackevat a écrit :

Si ce n'est pas secret, tu peux poster un exemple de fichier ?


 
- sur le server : 2 cases entierement blanches à la visu et deux carrés quand je copie ici :
 
0800473NSO252067521418372
0800474NSO253077511471186
0800485NSO246127635107423
0800494NSO149122123122510
...
 
- sous notepad : espace et apostrophe
 
 ’0800473NSO252067521418372
 ’0800474NSO253077511471186
 ’0800485NSO246127635107423
 ’0800494NSO149122123122510
...
 
- sous wordpad :  
 
arf il ne veut meme pas me copier ici ce qu'il voit sous wordpad.
c'est un mix des deux précédents, carré puis apostrophe.
 
- sous word il m'affiche la meme chose que sous wordpad (carré puis apostrophe)  
mais quand je le colle ici il enleve les carrés et les remplace par des espaces :
 
 ’0800473NSO252067521418372
 ’0800474NSO253077511471186
 ’0800485NSO246127635107423
 ’0800494NSO149122123122510
...
 
 

n°1352641
wackevat
Posté le 24-04-2006 à 13:05:12  profilanswer
 

Ce serait bien que tu postes le fichier en téléchargement, au lieu d'un copier/coller, histoire qu'on voie ce que c'est exactement l'apostrophe.

n°1352662
PepMat
Posté le 24-04-2006 à 13:42:54  profilanswer
 

wackevat a écrit :

Ce serait bien que tu postes le fichier en téléchargement, au lieu d'un copier/coller, histoire qu'on voie ce que c'est exactement l'apostrophe.


 
Je ne suis pas sur d'avoir le droit de rendre ces fichiers disponibles sur le net,
ce sont des renseignements personnels et il y a une loi qui les protège.
 
Pour l'apostrophe, comme je le dit plus haut, ce caractère apparait seulement dans ce fichier, dans les autres il s'agit d'autres caractères spéciaux : ' ¼', ' ¥', ' ™', ' Â', ' ', etc ...

mood
Publicité
Posté le 24-04-2006 à 13:42:54  profilanswer
 

n°1353010
Taz
bisounours-codeur
Posté le 24-04-2006 à 19:02:48  profilanswer
 

t'es sur que ça correspond pas à la longueur de la ligne ?
 
ton truc là, c'est juste que certains éditeurs de texte bidon te les affiche pas, c'est pas le transfert FTP qui va faire ça ...

n°1353029
PepMat
Posté le 24-04-2006 à 19:27:44  profilanswer
 

Taz a écrit :

t'es sur que ça correspond pas à la longueur de la ligne ?
 
ton truc là, c'est juste que certains éditeurs de texte bidon te les affiche pas, c'est pas le transfert FTP qui va faire ça ...


 
Certains de mes fichiers d'entrée ont des longueurs de ligne variable et pourtant c'est toujours les memes caractères qui sont présent devant chaque ligne de ces fichiers.
 
Je ne cherche pas à savoir à quoi correspondent ces caractères, je veux juste automatiser la procédure que je connais pour les effacer.
Et mon problème est que je ne peux pas 'trafiquer' ce fichier s'il a un codage inconnu de DOS ...

n°1353045
Taz
bisounours-codeur
Posté le 24-04-2006 à 19:49:03  profilanswer
 

ben t'as qu'à demander à qui te donne ces fichiers quel format de fichier il utilise et point.

n°1353093
PepMat
Posté le 24-04-2006 à 20:57:01  profilanswer
 

Taz a écrit :

ben t'as qu'à demander à qui te donne ces fichiers quel format de fichier il utilise et point.


 
Celui qui me donne ces fichiers, c'est un programme, et j'ai beau lui demander, il ne me répond pas souvent ...
 
Dans ma situation actuelle, qd je récupere le fichier et que j'essaye de lancer mon traitement dessus, le FOR /F ne passe pas.
Si j'enregistre préalablement mon fichier en codage ANSI, le traitement passe niquel.
 
Je cherche juste donc à automatiser le save file en codage ANSI (d'où le titre assez explicite j'espere).
 
Personne ne m'a encore dit que ce n'était pas possible, mais si vous pensez que c'est le cas, autant me le dire, je chercherai dans une autre voie.
 

n°1353110
wackevat
Posté le 24-04-2006 à 21:22:00  profilanswer
 

En fait, c'est pas évident de te dire possible ou pas sans voir le fichier dans son état natif. Il n'y pas moyen de produire une échantillon pas "sensible" ?
 
Sinon, comme contournement, tu peux "automatiser" les clics de souris et frappe clavier du passage par Notepad avec AutoIt 3 par exemple, même si ce n'est pas très élégante comme soluce ;)

n°1354159
PepMat
Posté le 26-04-2006 à 11:07:55  profilanswer
 

wackevat a écrit :

En fait, c'est pas évident de te dire possible ou pas sans voir le fichier dans son état natif. Il n'y pas moyen de produire une échantillon pas "sensible" ?


Si je le modifie un de mes fichiers pour le rendre moins sensible,
je serais obligé de l'enregistrer après la modif  
et du coup il ne sera plus dans son état natif.
(en plus j'ai pas d'espace de mise à disposition de fichiers sur le net sous la main)
A la limite je pourrais envoyer un fichier par mail individuellement à quelques âmes charitables.
 

wackevat a écrit :

Sinon, comme contournement, tu peux "automatiser" les clics de souris et frappe clavier du passage par Notepad avec AutoIt 3 par exemple, même si ce n'est pas très élégante comme soluce ;)


Je vais essayer d'éviter d'installer quoi que ce soit.
 
- Je pensais plutot à essayer d'utiliser une commande,  
par exemple lancer notepad en ligne de commande avec des paramètres spéciaux:
 
exemple, en ligne de commande :
 

Code :
  1. notepad /p text.txt


 
Cette commande automatise le print du menu file de notepad.
 
Je chercherai le meme genre de chose pour simuler le save avec parametres
 
dans le genre de :
 

Code :
  1. notepad /s ANSI test.txt


 
pour automatiser le save en codage ANSI
 
Mais je ne trouve rien là dessus.
Je prend mes exemple avec notepad mais il existe peut etre d'autres solutions.

n°1354551
wackevat
Posté le 26-04-2006 à 17:21:15  profilanswer
 

PepMat a écrit :

(en plus j'ai pas d'espace de mise à disposition de fichiers sur le net sous la main)


De très nombreux sites proposent l'hébergement gratuit des fichiers, rapidshare.de par exemple, avec la possiblité de les supprimer ultérieurement.

PepMat a écrit :

Je vais essayer d'éviter d'installer quoi que ce soit.


AutoIt 3 n'a pas besoin d'être installé.

n°1354556
wackevat
Posté le 26-04-2006 à 17:25:12  profilanswer
 
n°1354884
PepMat
Posté le 27-04-2006 à 09:20:10  profilanswer
 

Bon, je vais voir si ya pas un fichier que je pourrais vous mettre à disposition sans risquer grand chose.
 
Je vais ptet me tourner vers Autoit alors,
j'ai vu qu'on peux compiler les scripts en .exe, sans avoir besoin ensuite d'AutoIt installé pour l'utiliser.
 
J'essayerai chez moi,  
parceque je n'ai trouvé que des versions setup qui ont besoin d'etre installées  
et je n'ai pas les droits pour.
edit : autant pour moi, j'ai vu que seul AutoIt3.exe suffisait pour lancer les scripts, c'est bon.
 
Je vais juste essayer de creer un script qui fait ALT+F (menu files), R (enregistrer sous),ENTER (pour valider l'enregistrement).
 
Et merci pour le lien, mais je ne pense pas payer 10$ pour ne meme pas etre sur d'avoir la solution...

Message cité 1 fois
Message édité par PepMat le 27-04-2006 à 09:48:45
n°1355060
PepMat
Posté le 27-04-2006 à 12:40:08  profilanswer
 

Ok, c'est bon :
 
Mon batch me cree automatiquement le fichier script AutoIt, puis le lance :
 
(désolé de pas les mettre dans des balises codes mais ça merde de partout quand j'essaye)
 
ECHO Creation du fichier de script de formatage
 
ECHO Run ("notepad %file%" ) > ScriptFormat.au3
ECHO WinWaitActive("%file% - Bloc-notes" ) >> ScriptFormat.au3
ECHO Send ("!f" ) >> ScriptFormat.au3
ECHO Send ("r" ) >> ScriptFormat.au3
ECHO WinWaitActive("Enregistrer sous" ) >> ScriptFormat.au3
ECHO Send ("{ENTER}" ) >> ScriptFormat.au3
ECHO WinWaitActive("%file%.txt - Bloc-notes" ) >> ScriptFormat.au3
ECHO Send ("!f" ) >> ScriptFormat.au3
ECHO Send ("q" ) >> ScriptFormat.au3
 
ECHO Debut du Formatage du fichier
 
IF EXIST %file%.txt DEL %file%.txt
 
autoit3 Scriptformat.au3
DEL ScriptFormat.au3
ECHO Formatage du fichier en cours ...
 
DEL %file%
FOR /F "TOKENS=1,* DELIMS=0" %%a in (%file%.txt) do echo 0%%b >> %file%
DEL %file%.txt
ECHO Fin du programme
PAUSE
 
(fin)
 
Le script AutoIt lance ouvre mon fichier d'entrée avec notepad,
attend que la fenetre sous active (que le chargement de notepad soit fini),  
fait ALT+F (menu files), R (enregistrer sous)
attend que la fenetre enregistrer apparaisse et soit active
fait ENTER (save en .txt avec les options standard, donc bien ANSI ^^)
attend que la fenetre sous active (que l'enregistrement soit fini),  
fait ALT+F puis Q (menu files et Quitter)
 
ensuite mon FOR /F sur mon fichier obtenu marche très bien (un peu lentement mais bien).
 
Merci pour votre aide.
 
Si vous voyez des améliorations à faire,  
je suis open pour toute optimisation qui pourrait me faire gagner du temps.

n°1355542
wackevat
Posté le 27-04-2006 à 22:20:42  profilanswer
 

PepMat a écrit :

Et merci pour le lien, mais je ne pense pas payer 10$ pour ne meme pas etre sur d'avoir la solution...


Suffit de scroller la page.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Batch] Automatiser save file en codage ANSI

 

Sujets relatifs
file() ou file_get_contents() en safe modepb caracteres joker dans un batch windows
Variable en batchbatch: pb pour modifier fichier et ecrire dans un fichier
[batch] Quelle commande pour connaître la lettre du lecteur CD ?erreur (de débutant) dans un batch windows [Résolu]
[Batch] renommer un sous-répertoireBatch Dos. Fonction pour récuperer le nom du fichier dans un path?
Comment crée une function en Batch (Dos)Créer clé de registre avec un batch
Plus de sujets relatifs à : [Batch] Automatiser save file en codage ANSI


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR