minnesota :
ben je rajouterai juste un commentaire au début du code
lollCode:
1
2
3 Bookmarks.html TO .url files ************** Script by bejj (C) 2012
Je plaisante bien sûr ;)
Sinon pour virer les "=", vous avez une idée ?
Version imprimable
minnesota :
ben je rajouterai juste un commentaire au début du code
lollCode:
1
2
3 Bookmarks.html TO .url files ************** Script by bejj (C) 2012
Je plaisante bien sûr ;)
Sinon pour virer les "=", vous avez une idée ?
L'idéal serait une sorte de "procédure" (je sais pas si ça s'appelle comme ça en batch) ou une "function" qui nettoie une chaine de caractères pour en faire un nom de fichiers.
Ca doit exister tout fait non ?
Ou trouver cela ?Code:
1
2
3
4
5 string filename_washer (input string) # enlève tous les caractères interdits, racourcit le nom à moins de # 128 (ou 64?) caractères , modifie tous les caractères bizarroïdes # qui fonctionnent théoriquement en tant que nom de fichier mais qui donnent # des noms bizarres (ex : le symbole coeur en unicode ou ascii)
Je n'ai toujours pas réussi à filtrer les =, malgré pas mal de tentatives ....
Il suffit de chercher un convertisseur de chaines (unicode ansi oem) sur la toile, y'en a certainement un paquet...
Mais bon, ça te fera quand même une grosse quantité de raccourcie, question lisibilité j'imagine que tu vas être vite noyé surtout si les noms sont très longs.
Je vais voir à me donner une frayeur avec mon bookmark :aie: après ma pause café, j'en profiterais pour répondre à ta dernière question, j'ai une bonne astuce pour ça...
EDIT:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 @echo off ::mode 0 (noms de fichiers basés sur les noms de domaines) ::mode 1 (noms de fichiers basés sur les titres des liens) set mode=0 for /f "tokens=3,4 delims=^<^>" %%i in ('findstr "HREF=" bookmarks.html') do call :link "%%~j" %%i goto :eof :link set vtitle= set vlink= set vdomain= set vfile= set /a vrid=%random%%%90+10 for /f "tokens=1-26 delims=/\*?^<^>^|:^&^!=#" %%A in ("%~1") do set vtitle=%%A%%B%%C%%D%%E%%F%%G%%H%%I%%J%%K%%L%%M%%N%%O%%P%%Q%%R%%S%%T%%U%%V%%W%%X%%Y%%Z set "vlink=%~4" for /f "tokens=2 delims=/" %%i in ("%~4") do set vdomain=%%i SETLOCAL ENABLEDELAYEDEXPANSION if "%mode%"=="0" (set "vfile=!vdomain![%vrid%].url") else set "vfile=!vtitle!.url" (echo.[InternetShortcut] echo.URL=!vlink!)>"!vfile!" SETLOCAL DISABLEDELAYEDEXPANSION goto :eof
Merci encore minnesota. J'ai testé ton code, mais ça donne des trucs bizarre, en mode 1 comme en mode 2...
ça génère 50 fichiers au lieu de 1400 (le nombre de mes bookmarks).
avec l'autre méthode qui avait été posté ici par I'M_HERE, tout est ok (sauf quelques caractères récalcitrants que j'arrive pas à filtrer : "=" etc.)
>convertisseur de chaines (unicode ansi oem) sur la toile, y'en
> a certainement un paquet...
sous quel nom je peux trouver ça à ton avis ?
Y'a pas de mode 2 :aie:
Pour la suppression des caractères indésirables (dont =), l'astuce est en ligne 14 du précédent code.
Essaye en faisant une recherche genre "unicode to ansi oem"
Je pense cependant qu'il serait plus simple de se basée sur les noms de domaines :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 @echo off ::noms de fichiers basés sur les noms de domaines set mode=0 for /f "tokens=3 delims=^<^>" %%i in ('findstr "HREF=" bookmarks.html') do call :link %%i pause goto :eof :link set vlink= set vdomain= set /a vrid=%random%%%90+10 set "vlink=%~3" for /f "tokens=2 delims=/" %%i in ("%~3") do set vdomain=%%i SETLOCAL ENABLEDELAYEDEXPANSION (echo.[InternetShortcut] echo.URL=!vlink!)>"!vdomain![%vrid%].url" SETLOCAL DISABLEDELAYEDEXPANSION goto :eof
sinon avec 1400 liens, je me demande comment tu va t'y retrouver, faudrait peut-être envisager une autoclassement par dossier/domaine ou bien construire un fichier html, avec tout les liens dans un frame par exemple.
Re-bonjour,
Hélas avec ces scripts (pourtant fort efficaces), je me suis retrouvé avec des noms de fichiers avec des caractères très bizarres!
D'ailleurs il y a un même un fichier qui est IMPOSSIBLE à supprimer à présent:
* dans l'explorateur de Windows : impossible
* en mode commande MSDOS (Exécuter > CMD.EXE > del ... ) : impossible
* même avec HiJackThis qui propose "Delete on reboot", c'est pareil : ce fichier au nom bizarre (avec des caractères ascii ou unicode bizarre) est IMPOSSIBLE à supprimer
loll
:D
-
Conclusion de l'affaire : cette méthode qui correspond à bloquer un certain nombre de caractères est inutilisable : il faudrait filtrer des dizaines et des dizaines de caractères ASCII , voire des centaines de caractères unicode.
Avez vous une idée permettant de transformer une chaine de caractères donnée en un nom de fichier valide ?
J'ai rien trouvé de concluant avec "unicode to ansi oem".
Il doit exister des fonctions existantes pour ça, mais où ?
Un grand merci d'avance
PS : y a t il une fonction qui, à partir d'une chaine de caractère donnée, ne garde que A-Z, a-z, 0-9, qui transforme les é ê è en e , les ç en c, etc.
presque un mois après, je me rappelle même plus du sujet :roll:
:D Le script permettait de créer 1 fichier .url pour chaque ligne d'un fichier bookmarks.html.
Ce qui se trouve entre chaque <a href> et </a> (=chaine de caractères)
donnera le nom du fichier .url à créer.
Du coup il faut trouver un moyen pour transformer n'importe quelle
CHAINE DE CARACTERES ---> NOM DE FICHIER VALIDE
La méthode qui consiste à énumérer les caractères à supprimer (":", "/", "\", etc.) ne fonctionne pas car il y aurait en réalité VRAIMENT BEAUCOUP TROP de caractères à filtrer... (il y a des centaines de caractères bizarres en ASCII, ANSI ou UNICODE ;))
Du coup je cherche un moyen de transformer n'importe quelle CHAINE DE CARACTERES en un NOM DE FICHIER VALIDE .
Ca m'a l'air super long à coder :
* garder uniquement les A-Z, a-z, 0-9,
* remplacer les é, è, ê, etc. par e, ç etc.
Du coup ça doit déjà exister, mais où ?
J'ai beau chercher.... Pas de recherche concluante...
Ca existe certainement, mais où puis-je trouver une routine existante qui transforme une chaine de caractères quelconque en une chaîne nom de fichier valide ?
Y a trop de sous-cas à considérer (supprimer des centaines de caractères), si on veut le faire à la main.
Avez vous une idée où je pourrai trouver ça ? Sur quel genre de site ?
Ca existe sûrement !
Normalement avec le script "noms de domaines", tu n'es pas censé rencontrer de caractères spéciaux, si ?
Bonjour minnesota,
J'ai beau utiliser la fonction "Rechercher" sur ce forum, je ne trouve pas le script "noms de domaines" dont tu parles... Saurais tu où le trouver ?Citation:
Normalement avec le script "noms de domaines", tu n'es pas censé rencontrer de caractères spéciaux, si ?
Un grand merci!
bejjj
là, juste au dessus...
ahhhhhh ok tu parlais de ce script !
Je pensais que tu parlais d'un script connu qui transforme toute chaine de caractères en nom de domaine valide...
En fait le script que tu donnes plus haut ne va pas trop (mais merci quand même!!!) parce que j'ai des tonnes de .url qui ont le même nom de domaine...
Faudrait vraiment que je trouve un .exe qui transforme une chaine donnée en une chaine valide...
Ben en fait, il met un id avec le nom de domaine, de sorte qu'aucun raccourci ne soit écrasé. Par ailleurs, si tu laisses des chaines longues, seule la première partie sera visible dans ton explorateur de fichier. Perso, j'aurais tout mis dans un fichier HTML avec un menu déroulant et des frames.
Sinon, j'avais repéré un exe de conversion de chaine, je vais voir si je peux le retrouver après le déjeuner.