[Script bash] Edition de nombreux fichiers.
Résolu/Fermé
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
-
19 déc. 2006 à 09:41
Etienen - 12 mars 2007 à 14:32
Etienen - 12 mars 2007 à 14:32
A voir également:
- [Script bash] Edition de nombreux fichiers.
- Script vidéo youtube - Guide
- Explorateur de fichiers - Guide
- Everest home edition - Télécharger - Informations & Diagnostic
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
12 réponses
mamiemando
Messages postés
33614
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
2 avril 2025
7 836
19 déc. 2006 à 10:32
19 déc. 2006 à 10:32
Ben c'est juste une boucle for ?
Bon il faut arranger deux trois choses notamment ça écrit ceci est dupont.bat mais c'est dans l'idée. De même si tu utilises un find au lieu d'un ls il faudra extraire le bon morceau (le nom du gars) du nom de fichier.
Bonne chance
for x in `ls`; do echo "ceci est $x" >> $x ; done
Bon il faut arranger deux trois choses notamment ça écrit ceci est dupont.bat mais c'est dans l'idée. De même si tu utilises un find au lieu d'un ls il faudra extraire le bon morceau (le nom du gars) du nom de fichier.
Bonne chance
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 10:49
19 déc. 2006 à 10:49
C'est la que je bloque un petit peu ... comment supprimer ce satané .bat à la fin de ma ligne ... :(
J'ai essayé avec cut, mais je n'arrive pas a avoir de résultat convaincant :(
Merci en tout cas pour le début, tu m'as grandement aidé :D
Juste une question : Le "for x" veut dire "pour tout" ?
J'ai essayé avec cut, mais je n'arrive pas a avoir de résultat convaincant :(
Merci en tout cas pour le début, tu m'as grandement aidé :D
Juste une question : Le "for x" veut dire "pour tout" ?
hummm...
le problème c'est qu'il veut enlever l'extension .bat...
une idée que je voie (surement bourrin) serait de mettre le listing un fichier temp , faire un sed dessus (enlevement des .bat)...
puis apres refaire le echo en bouclant sur les lignes de fichier, cette fois ci sans l'extension .bat bien sur :)
le problème c'est qu'il veut enlever l'extension .bat...
une idée que je voie (surement bourrin) serait de mettre le listing un fichier temp , faire un sed dessus (enlevement des .bat)...
puis apres refaire le echo en bouclant sur les lignes de fichier, cette fois ci sans l'extension .bat bien sur :)
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 11:01
19 déc. 2006 à 11:01
Est ce qu'on ne peut pas plus simplement creer une variable "nom" par exemple, qui serait :
NOM='$x cut -.bat'
Je mets "cut -.bat" car c'est la que je bloque ... quel outil utiliser pour supprimer ce ".bat" ... je ne sais pas ... mais c'est juste pour l'idée, on ne peux pas creer une nouvelle variable, et ensuite lui dire :
echo $NOM ?
NOM='$x cut -.bat'
Je mets "cut -.bat" car c'est la que je bloque ... quel outil utiliser pour supprimer ce ".bat" ... je ne sais pas ... mais c'est juste pour l'idée, on ne peux pas creer une nouvelle variable, et ensuite lui dire :
echo $NOM ?
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
19 déc. 2006 à 11:40
19 déc. 2006 à 11:40
Pas vraiment besoin d'utiliser cut (un processus à chaque fois)
Un bonne lecture de man bash donne la solution
Johan
Un bonne lecture de man bash donne la solution
johan@johan:~$ nomfic=patati.bat johan@johan:~$ echo ${nomfic%%.bat} patati
Johan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 11:49
19 déc. 2006 à 11:49
%% sert à supprimer ce qui suit ?
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 11:49
19 déc. 2006 à 11:49
Ouiiiiiiiiiiii, j'ai enfin trouvé !!!
Voila comment j'ai fait :
#! /bin/bash
for x in `ls *.bat`;
do
NOM=`echo $x | cut -d . -f 1`
echo "
ceci est le fichier de $NOM" >> $x ;
done
Donc avec la base du fichier de la commande à mamiemando, et un coup de cut derriere, et c'est passé !!!
Je suis trop content ... merci :D
Voila comment j'ai fait :
#! /bin/bash
for x in `ls *.bat`;
do
NOM=`echo $x | cut -d . -f 1`
echo "
ceci est le fichier de $NOM" >> $x ;
done
Donc avec la base du fichier de la commande à mamiemando, et un coup de cut derriere, et c'est passé !!!
Je suis trop content ... merci :D
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 11:57
19 déc. 2006 à 11:57
Bon, ben encore plus simple avec la solution de jisisv :
#! /bin/bash
for x in `ls *.bat`;
do
echo "
ceci est le fichier de ${x%%.bat}" >> $x ;
done
Ca marche niquel, merci beaucoup !!!
#! /bin/bash
for x in `ls *.bat`;
do
echo "
ceci est le fichier de ${x%%.bat}" >> $x ;
done
Ca marche niquel, merci beaucoup !!!
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 16:49
19 déc. 2006 à 16:49
Personne n'a une idée ? :(
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 17:32
19 déc. 2006 à 17:32
Je viens de trouver l'info (au cas ou un jour quelqu'un ai le meme pb que moi).
Le signe \ en programmation signifie "ignorer le caractere suivant"
donc, pour que ca marche, je dois mettre :
Voila, merci à tous pour votre aide, probleme reglé !
Le signe \ en programmation signifie "ignorer le caractere suivant"
donc, pour que ca marche, je dois mettre :
net use f: \\\serveur\\repertoire_perso\\${x%%.bat}\\
Voila, merci à tous pour votre aide, probleme reglé !
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
19 déc. 2006 à 21:05
19 déc. 2006 à 21:05
Salut,
Le signe \ en programmation signifie "ignorer le caractere suivant"
je dirai plutôt que le \ permet d'interpreter le caractère qui suit en tant que caractère littéral
dans ton cas \$ interprète le $ en tant que caractère litteral au lieu de de dire
\ - antislash
${x%%.bat} - contenu de la variable modifié selon le motif
ce qu'on ne veut pas
quand tu écrit \\${x%%.bat} en fait le antislash avant le $ est interprété en tant qu'antislash suis de la variable.
Le signe \ en programmation signifie "ignorer le caractere suivant"
je dirai plutôt que le \ permet d'interpreter le caractère qui suit en tant que caractère littéral
dans ton cas \$ interprète le $ en tant que caractère litteral au lieu de de dire
\ - antislash
${x%%.bat} - contenu de la variable modifié selon le motif
ce qu'on ne veut pas
quand tu écrit \\${x%%.bat} en fait le antislash avant le $ est interprété en tant qu'antislash suis de la variable.
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 22:38
19 déc. 2006 à 22:38
Oki; merci pour cette précision lami20j :D
boulate
Messages postés
14
Date d'inscription
mardi 19 décembre 2006
Statut
Membre
Dernière intervention
30 août 2007
19 déc. 2006 à 12:41
19 déc. 2006 à 12:41
et mince ... j'ai parlé trop vite ... ca marche avec la phrase "simple" de l'exemple ... mais pas avec la ligne de commande dans laquelle je dois integrer ma variable ...
Je dois l'integrer dans une ligne tel que par exemple :
Apparement, il n'aime pas le "\" collé au "$" ... car si je mets un espace ca marche ...
Comment passer outre ce probleme ?
Je dois l'integrer dans une ligne tel que par exemple :
net use f: \\serveur\repertoire_perso\${x%%.bat}\
Apparement, il n'aime pas le "\" collé au "$" ... car si je mets un espace ca marche ...
Comment passer outre ce probleme ?