Utilisation Ms-Dos , Remplir un fichier .sql

[Résolu/Fermé]
Signaler
-
 Davletuner -
Bonjour,
je suis entrain de créer un programme Batch (.bat) qui permet par exemple de trouver tous les fichiers d'une même extension et de les intégrer dans un premier temps dans un fichier .sql puis ce programme créer une base de donnée comportant les informations.

Mon problème :
- Je souhaiterais que quand j'exécute un dir /b *.avi >> Test.sql par exemple, qu'il me crée un fichier avec INSERT INTO `Les films` ( La liste des variable) VALUES ( le nom du film , la taille ...);

Avec le nom et la taille correct, je vient de passer 3h sur ce probleme que j'arrive pas a résoudre.

-Dans un second temps , je souhaiterais que ce même fichier Test.sql soit directement dans un dossier que j'ai choisi , comment faire ?


Merci a tous , vous pouvez me mailer à Davletuner arobase hotmail point com

J'ai mis l'adresse hotmail comme sa pour eviter les bots spammer ;)

29 réponses


Salut,

Pour le premier problème, je ne sais pas, et je n'ai pas trop le temps la, je verrai demain si j'y arrive...

Par contre, pour :
"je souhaiterais que ce même fichier Test.sql soit directement dans un dossier que j'ai choisi , comment faire?"

Essaies ceci :

dir /b *.avi >> "C:\Mon_dossier\Mon_sous_dossier\Test.sql"



@+
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Je vient d'essayer , cela marche niquel , je ne sais pas pourquoi je n'ai pas essayer directemnt :)

Merci a toi H4RDW4RE.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


De rien =D

Pour ton premier problème, je n'ai pas trop compris. Tu veut qu'il y ai afficher quoi exactement dans ton fichier SQL ?
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

En faite mon programme crée une base de donnée , et je souhaiterais grace au dir du ms dos de remplir les Insert Into afin de remplir cette même base de donnée.

Sa donnerais environ sa :

INSERT INTO `Films` (`id`, `nom`, `taille`) VALUES(, 'Disco', 630);

Si biensur le Film Disco est sur mon Pc
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

salut

en fait, le résultat de dir n'est pas aisément manipulable : il sera très difficile de construire une requête avec ça.
par contre, on peut très bien imaginer une mini mise en forme grace au for /f avec quelques options bien placées...
genre
for /f "usebackq tokens=1,3-4" %i in (`dir *.avi|find /i ".AVI"`) do echo insert into `table`(nom, date, taille) values('%k', '%i', to_number(%j));>>mesrequetes.sql

avec auparavant l'écriture d'une fonction (je sais pas si c'est possible avec ton moteur) to_nmber() supprimant 0xff (ou je sais plus trop ce qui est utilisé) dans la taille car la taille affiché a des séparateurs de milliers qui rendent la valeur non numérique

plus d'infos : for /?

Amuse-toi bien
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
dans un .bat il faut utiliser double %
help for
Pour utiliser la commande FOR dans un programme de commandes, spécifiez
%%variable au lieu de %variable. Les noms de variables respectent la
casse, donc %i est différent de %I.
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci


Ouaaaaa, ça va être tendu...

Mais je vais essayé sa demin (je suis pas sur de trouver), je te redis dans tout les cas où sa en est.

@+
Très bien merci a vous deux.

Je testerais demain , pour info le séparateur de millier si est le même que pour le dir il faut faire /-C

Merci encore
Alors j'ai tester ton code othanga , mais le problème c'est que le dir va mettre aussi le nombre de fichiers , les octets au total ...
ce qui donne un code tres moche xD :
insert into `table`( id, nom, date, taille) values('','le', 'Le', dans);
insert into `table`( id, nom, date, taille) values('','s‚rie', 'Le', de);
insert into `table`( id, nom, date, taille) values('','', 'R‚pertoire', Mon Dossier);
insert into `table`( id, nom, date, taille) values('','Films1', '30/04/2009', 733413376);
insert into `table`( id, nom, date, taille) values('','octets', '1', 733413376);
insert into `table`( id, nom, date, taille) values('','octets', '0', 224641912832);
insert into `table`( id, nom, date, taille) values('','le', 'Le', dans);
insert into `table`( id, nom, date, taille) values('','s‚rie', 'Le', de);
insert into `table`( id, nom, date, taille) values('','', 'R‚pertoire', Mon dossier);
insert into `table`( id, nom, date, taille) values('','Films1', '30/04/2009', 733413376);
...
Mon Dossier>for /f "usebackq tokens=1,3-4" %i in (`dir /s /-C *.avi`) do echo insert into `table`( id, nom, date, taille) values('','%k', '%i', %j);>> test.sql

Je vais chercher s'il y a pas moyen de recup correctement les données
En faite le probleme vient du "|" car or syntaxe cela marche niquel , mais des que je l'introduit dans le for , sa me marque qu'il est inatendu

for /f "usebackq tokens=1,3-4" %i in (`dir /-C /s *.avi|find /i ".AVI"`) do echo insert into `table`( id, nom, date, taille) values('','%k', '%i', to_number(%j));>> Test.sql

Voici la requete tester
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
hello
essaye avec ^|
for /f "usebackq tokens=1,3-4" %i in (`dir /-C /s *.avi^|find /i ".AVI"`
Je vient de tester en cela marche niquel :)
Merci dubcek.

Maintenant le probleme c'est que mon .bat ne l'execute pas.

Explication :
- L'utilisateur entre le chemin ou rechercher les films ou autres

ECHO Veillez donner le chemin que vous voulez et l'extension du(des) fichier(s)
set /p chemin= Chemin :
if %chemin%. == . set chemin=C:\Users\David\Downloads rem Donnée par defaut
set /p ext=Extension :
if %ext%. == . set ext=avi rem Donnée par defaut
set /p nom=Nom du fichier a cr‚er :
if %nom%. == . set nom=Films rem Donnée par defaut



cd %chemin%

for /f "usebackq tokens=1,3-4" %i in (`dir /-C /s *.avi ^|find /i ".AVI"`)
do echo insert into `table`( id, nom, date, taille,type) values('','%k', '%i', '%j','Films'); >> "C:\Users\David\Desktop\Projet Archivage\%nom%.sql"

pause


Dès qu'il execute il ferme le programme , je vais regarder les info du for
Oui , je vient de voir sa .

Je vais tester , je vous tient au courant ;)
اريد بروقرام
Bonjour, En train d'éssayer de passer à Linux pour faire le développement php que je faisais sous Win XP, j'ai installé XAMPP. Tout a l'air d'aller, sauf l'import de tables sous PhpMyAdmin à partir de fichiers .sql générés par la fonction export d'une... www.commentcamarche.net/forum/affich-6833436-phpmyadmin-pb-import-fichier-sql
Forum
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
dans ton script, je changerais
for /f "usebackq tokens=1,3-4"
par
for /f "usebackq tokens=1,3,*"
car si il y a un espace dans le nom du fichier, 4 ne représente que le debut du nom
Voila mon programme marche bien now , ma derniere erreur étit un retour a la ligne qui faisait planter le programme :)

Merci a vous tous :)
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
regarde mon post 15
Oui je l'avait modifier dans mon programme déja ;)

Merci encore a vous :)
Messages postés
18247
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
2 août 2021
5 333
pour
if %chemin%. == . set chemin=
tu peux utiliser la variable %CD% qui représente le chemin actuel, donc .
Oui je l'avait déja fait le * dans le for ;)

Oui , merci de l'info pour le chemin actuel ;)
Ah , aussi , comment doit je faire si l'utilisateur veut changer de disque , par exemple , il est dans C: et il veut faire la liste des films dans D: