La Pause Café du Forum Programmation [PART 3]

C’est bien entendu la première chose que j’ai voulu faire pour m’y retrouver (car au début j’arrivais pas à savoir quelle était la logique de nommage des fichiers ^^

Sauf que wow ca a quelques années, et qu’au fil du temps j’ai changé 3 fois de PC environ, entre les copies, les sauvegardes et compagnie… ces données là sont complètement fausses désormais.

n00b :o

[:shy]

Je veux participer !

Programme développer en windev 16 ce matin. Permet de renommer de déplacer et renommer (pour éviter les erreurs) en masse des fichiers d’un répertoire avec une « date » dans leur nom. La liste des fichiers doivent avoir une structure du nom identique.
Le programme comprend une fenêtre :

  • permet de sélectionner le répertoire ou sont les fichiers
  • 3 zones ou on met le nom du fichier + extension pour permettre de séparer la date du texte pour pas de confusion dans le programme (cf légende dans la fenêtre)
  • sélectionner le répertoire de sortie et 3 zones pour nommer le fichier de sortie

Le code du bouton ci-dessous. Faut voir avec la fenêtre pour comprendre un peu le code.

SI SAI_REP="" ALORS RepriseSaisie(SAI_REP)
SI SAI_date="" ALORS RepriseSaisie(SAI_date)
SI SAI_dateSor="" ALORS RepriseSaisie(SAI_dateSor)
SI SAI_REPSor="" ALORS RepriseSaisie(SAI_REPSor)

sListeFichier est une chaîne=fListeFichier(SAI_REP+"\*")
sUnFichier est une chaîne=ExtraitChaîne(sListeFichier,rangPremier,RC)
sFichierSortie est une chaîne
sDateSortie est une chaîne
sChaineDate est une chaîne
dhVarDateHeure est une DateHeure=DateSys()
ChainePosition est un entier

Sablier()

POUR TOUTE CHAINE sUnFichier DE sListeFichier SEPAREE PAR RC

	SI ChaîneCommencePar(sUnFichier,SAI_REP+"\"+SAI_Deb) ET ChaîneFinitPar(sUnFichier,SAI_Fin) ALORS
		sChaineDate=Droite(sUnFichier,Taille(sUnFichier)-Taille(SAI_REP+"\"+SAI_Deb))
		sChaineDate=Gauche(sChaineDate,Taille(sChaineDate)-Taille(SAI_Fin))
		
		SI Taille(sChaineDate)<>Taille(SAI_date) ALORS
			//sa ressemble pas berk, on saute	
			CONTINUER
		FIN
		
		//Année
		ChainePosition=PositionOccurrence(SAI_date,"YYYY",1)
		SI ChainePosition<>0 ALORS //année sur 4 chiffres
			dhVarDateHeure..Année=Milieu(sChaineDate,ChainePosition,4)
		SINON 
			ChainePosition=PositionOccurrence(SAI_date,"YY",1)
			SI ChainePosition<>0 ALORS //année sur 4 chiffres
				dhVarDateHeure..Année="20"+Milieu(sChaineDate,ChainePosition,2)
			FIN	
		FIN
		
		//Mois
		ChainePosition=PositionOccurrence(SAI_date,"MM",1)
		SI ChainePosition<>0 ALORS 
			dhVarDateHeure..Mois=Milieu(sChaineDate,ChainePosition,2)
		FIN
		
		//Jour
		ChainePosition=PositionOccurrence(SAI_date,"JJ",1)
		SI ChainePosition<>0 ALORS 
			dhVarDateHeure..Jour=Milieu(sChaineDate,ChainePosition,2)
		FIN
		
		//Heure
		ChainePosition=PositionOccurrence(SAI_date,"hh",1)
		SI ChainePosition<>0 ALORS 
			dhVarDateHeure..Heure=Milieu(sChaineDate,ChainePosition,2)
		FIN
		
		//Min
		ChainePosition=PositionOccurrence(SAI_date,"mm",1)
		SI ChainePosition<>0 ALORS 
			dhVarDateHeure..Minute=Milieu(sChaineDate,ChainePosition,2)
		FIN
		
		//seconde
		ChainePosition=PositionOccurrence(SAI_date,"ss",1)
		SI ChainePosition<>0 ALORS 
			dhVarDateHeure..Seconde=Milieu(sChaineDate,ChainePosition,2)
		FIN
		
		//On formate le nom du fichier de sortie
		sFichierSortie=SAI_DebSor
		sDateSortie=SAI_dateSor
		
		//Année cas spécial
		ChainePosition=PositionOccurrence(sDateSortie,"YYYY",1)
		SI ChainePosition<>0 ALORS //année sur 4 chiffres
			sDateSortie=Remplace(sDateSortie,"YYYY",dhVarDateHeure..Année)
		SINON 
			ChainePosition=PositionOccurrence(sDateSortie,"YY",1)
			SI ChainePosition<>0 ALORS //année sur 4 chiffres
				sDateSortie=Remplace(sDateSortie,"YY",NumériqueVersChaîne(Droite(dhVarDateHeure..Année,2), "02,0f"))
			FIN	
		FIN
		
		//Mois
		sDateSortie=Remplace(sDateSortie,"MM",NumériqueVersChaîne(dhVarDateHeure..Mois, "02,0f"))
		
		//Jour
		sDateSortie=Remplace(sDateSortie,"JJ",NumériqueVersChaîne(dhVarDateHeure..Jour, "02,0f"))
		
		//Heure
		sDateSortie=Remplace(sDateSortie,"hh",NumériqueVersChaîne(dhVarDateHeure..Heure, "02,0f"))
		
		//Min
		sDateSortie=Remplace(sDateSortie,"mm",NumériqueVersChaîne(dhVarDateHeure..Minute, "02,0f"))
		
		//seconde
		sDateSortie=Remplace(sDateSortie,"ss",NumériqueVersChaîne(dhVarDateHeure..Seconde, "02,0f"))
		
		sFichierSortie+=sDateSortie+SAI_FinSor
			
		SI fCopieFichier(sUnFichier,SAI_REPSor+"\"+sFichierSortie) ALORS
			SI INT_Suppr ALORS fSupprime(sUnFichier)
		FIN
		
	FIN
FIN

Téléchargement ici (v1.0)
Téléchargement ici (v1.1)

Edit: le lien de DL était pas bon
Rajout de la 1.1, j’ai remplacé les « Y » par « A » en bon français :slight_smile: et modif de l’interface
Edité le 03/05/2012 à 14:25

Ca semble pas mal sur le papier ton affaire merlon, je testerais ca ce soir car dl.free est bloqué par ici ^^

Merci en tout cas !

ant renamer fait l’affaire ^^ sans passer par des expressions régulières compliquées il permet de déplacer des tronçons de string facilement.

Salut, je vais bientôt formater mon seven et j’aimerai repartir sur de bonnes bases.
Y’a un truc qui m’a toujours étonné sous windows, c’est le dossier « Program Files » qui contient un espace et qui fouare avec pas mal de programmes (cygwin, compilos etc).
J’ai bien tenté le coup du tilde mais ça marche pas forcément mieux.
J’aime pas non plus mettre mes dossiers d’install sur C:, ça devient vite crade je trouve.
La solution la plus simple serait de créer un autre répertoire sans espace (bon deux vu que j’aime bien séparer les x86 des x64) mais c’est pas clean au niveau de l’OS. J’ai peur que bidouiller le registre ne soit pas suffisant. Peut-être du côté des symlinks ?
Vous faites comment vous ? Des idées ?
Merci :slight_smile:

Suffit d’utiliser des applis bien codées :stuck_out_tongue:

J’installe tout dans @utils dans un autre dossier, parce que c: je laisse jamais des kilotonnes de place… et là vu que j’ai un SSD ya un cap évident à pas franchir :smiley:

+1 kookiz33.

Toutes les applications que j’utilise gère bien les espaces, ou alors, je ne les installe pas :slight_smile:
Sinon, tu peux faire une version spécifique de Seven en changeant le nom du dossier, mais bon…

Ou renommer ton dossier, faire un replace dans le regedit, changer ta variable path et bidouiller le reste du temps trollface

kookiz33 > Ha ça! Sans troller (car mine de rien j’aime bien Windows), suffit déjà de voir chez Microsoft, ça les arrange bien les path insensibles à la casse dans leurs OS, y’a aucune harmonie dans les system32 System32 SYSTEM32 etc. Ca leur prendrait plus de temps à cleaner leur code que de rendre les paths casse sensitives.

Startide > Je suis sur laptop et j’ai qu’un disque, du coup je perdrai en performance à partitionner ce genre de dossiers, mais l’idée de faire un autre dossier est la plus simple à mettre en oeuvre, mais la plus redondante à la longue je trouve :confused:

Sans-Nom > Pourtant j’aime bien Netbeans :frowning: !

R3v0LT > Ou alors je peux réécrire la table asccii, faire pression à la norme ISO et remplacer à la volée les espaces par des underscores :stuck_out_tongue:

Bah pour être franc, je vois pas l’intérêt des chemins case sensitive. Tu as envie d’appeler un dossier « documents », un autre « Documents », et un troisième « DOCUMENTS » ?
Edité le 14/05/2012 à 22:54

+1 Sur la casse. Le seul intérêt à ne pas le supporter … c’est que c’est moins performant, et encore pas sûr que ça ait une influence aujourd’hui.

La seule idiotie de Windows est, à mon sens, de ne pas forcer l’utilisation de \ comme séparateur de chemin : Windows devrait refuser le / ou n’utiliser que le /, mais pas faire un mix des deux, c’est un vrai merdier (ex: quand vous sauvegardez un fichier, vous pouvez taper (sous 7) C:/ dans le champ en haut à gauche mais pas dans celui des fichiers, faut taper C:.… tu parles d’une logique :/)

Si NetBeans n’aime pas les espaces dans les chemins, c’est que c’est de la merde. Utilise Eclipse ! :smiley:

Autant dire : remplacer une merde par une bouse de mammouth :ane:

VIM 4 EVER :o [:shy] …

Edlin :o

KisSCoOl : +1 :smiley: J’utilise pas mal VIM depuis que j’ai un gentoo :smiley: (j’utilise que vim sous ssh :P)
Edité le 15/05/2012 à 21:37

J’utilise aussi VIM sous mon archlinux, et je l’aime bien.
Mais pour une IDE sous win, j’ai pas trouvé mieux que NetBeans pour l’instant, Eclipse est vraiment nul à chier je trouve et leur logo est dégueu. :paf:
Je trouve que ce qui manque le plus dans l’arborescence windows (hormis la gestion des caractères dans les chemins), c’est une gestion simple et efficace des liens symboliques.
Pour le casse sensitive, dans l’absolu il est vrai que c’est pas vraiment utile…

Pour les liens symboliques, HardLink Shell Extension ?
Je ne sais pas pour les fonctionnalités d’Eclipse - elles me conviennent - mais l’interface de NetBeans, je la trouve moche. On se croirait revenir avec Swing…

Puray, j’ai une copine qui fait des études en traduction linguistique, son prof d’info lui demande des trucs vraiment utiles pour son futur métier :paf:

Un fichier XML contenant des lignes de ce type
Resumption of the reunion|Reprise de la reunion

Le but est de trouver grâce à des commandes shell unix les mots non traduits ou qui sont identiques dans la langue source et la langue cible. ya le | pour séparer la langue source de la langue cible.

Z’avez une vague idée pour faire ça ?
Je vois un enchainement de grep et/ou de sed, mais je me demande si une expression régulière ne pourrait pas tout faire d’un seul coup.

:jap:

Hum, là en une ligne j’ai pas :confused:

Clair, surtout quand tu sais que des solutions comme Pootle font ça à merveille :oui:


Malheureusement, tellement véridique : Le recrutement à la Française… :oui: