Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 11h01   #1
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Par défaut Renommer en masse des fichiers html

Bonjour,

Je produis chaque mois un bon nombre de rapports html avec un nom de fichier NIV_CODE_PER_MOIS.html.

Parfois il arrive que certains codes soient modifiés. Or je voudrais les renommer directement dans le dossier où ils sont stockés sans avoir à les relancer.

Je récupère la liste des fichiers dans une table et je la mets en forme pour produire un fichier .bat :

Code :
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
filename test1 pipe "dir d:\ESSAI_MOHAMED\2011_10";
DATA temp;
length text $132;
INFILE test1 truncover;
input text 1-132;
put text=;
run;  
 
 
DATA MOA ;
		SET temp ;
			lib=substr(text,1,10);	
			blanc1=substr(text,11,2);    	
			heure=substr(text,13,5);
			blanc2=substr(text,18,12);                        
			biz=substr(text,30,6);                                
			blanc3=substr(text,36,1);   
			FIC=substr(text,37);      
		*DROP TEXT;
run;
 
DATA FIC (keep =fic n5 n4); 
	SET MOA ;
	WHERE fic LIKE '%html%' OR fic LIKE '%png%' ;
	N5 = IFC(FIND(fic,"&code."),"1","0") ;
	N4 = IFC(FIND(fic,"&code2."),"1","0") ;
	IF N5 = "1" OR N4 = "1" ;
run ;
 
/* jE CREE UN FICHIER BAT DE COMMANDES POUR RENOMMER LES FICHIERS CONTENUS DANS LE DOSSIER */
FILENAME TEXT "d:\ESSAI_MOHAMED\2011_10\rename.bat" ;
DATA RENOMME ;
	SET FIC ;
	file TEXT ;
	IF N5 = "1" then do ; 
	FIC2 = TRANWRD(FIC,"ancien_code","new_code") ;
	end ;
	IF N4 = "1" then do ; 
	FIC2 = TRANWRD(FIC,"ancien","new_code") ;
	end ;
	put "rename " fic fic2 ;
RUN ;
Ensuite, quand je lance l'execution en tant qu'administrateur, les fichiers ne sont pas renommés.

Je voudrais savoir pourquoi il ne sont pas renommés et comment lancer l'execution du fichier .bat depuis sas.
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 12h52   #2
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 012
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 012
Points : 1 717
Points : 1 717
ils ne sont pas renommés parce qu'il y a une erreur dans les instructions Batch voir dans ton programme SAS .

pourquoi passer par un BAT ? l'exécution de la commance rename depuis sas ne suffit-elle pas?
Code :
1
2
3
 
OPTION noxwait;
X RENAME "chemin\ancien_nom_fic.html" "chemin\nouveau_nom_fic.html";
après pour l'"anciens noms" et "nouveux noms" tu les récupères dans des macro variable + boucle ou call execute et le tour est joué.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 08h10   #3
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 828
Points : 2 828
Tu pourrais utiliser la fonction RENAME de SAS plutôt qu'un batch. Ca me semble une solution plus robuste puisqu'elle ne dépend pas de l'OS ni de la version de SAS (y compris si tu passes en SAS Guide).
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2011, 10h04   #4
Rédacteur
 
Homme Stéphane
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 1 791
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 1 791
Points : 4 012
Points : 4 012
... Ni de l'autorisation ou non de pouvoir exécuter des commandes systèmes (option NOXCMD désormais activé par défaut).

Un certain nombre de fonctions comme celle-ci sont très intéressantes et se substituent avantageusement à des scripts systèmes.

Voir la catégorie "External Files" des fonctions
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 11h31   #5
Nouveau Membre du Club
 
Inscription : juillet 2010
Messages : 73
Détails du profil
Informations forums :
Inscription : juillet 2010
Messages : 73
Points : 32
Points : 32
Bonjour,

la fonction rename permet exactement ce que je recherche et sans passer par des fonctions systeme.
Plus besoin de .bat. C'est exactement ce que je souhaitais.


Code :
1
2
3
DATA _null_ ;
rc=RENAME('&ancien_code.','&new_code.','file');
run ;
Merci.
mohamed_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h15.


 
 
 
 
Partenaires

Hébergement Web