la fonction Copy de windows... ?

Sujets variés concernant le développement en PureBasic
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

la fonction Copy de windows... ?

Message par Ar-S »

Salut,

Je me posais la question suivante, quel exe lance la copy de fichier dans windows. Je ne parle pas de xcopy.exe mais bien de celle qu'on peux utiliser dans la Boite de commande (demarrer/exécuter => cmd puis Copy fichiersource fichierdestination.)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Sous windows, ce n'est pas un exe (au contraire de xcopy), c'est un mot réservé qui a l'origine (sous dos) était géré par command.com, et qui maintenant fait partie du système.
Toutes les commandes n'étaient pas inclues du fait de la limitation mémoire.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Merci Djes, c'est vrai je m'en suis rendu compte, il apparait dans command.com et aussi dans cmd.exe
C'est ce dernier qui m'intéresse.

Je n'arrive pas à lancer la fonction copy de ce cmd.exe via PB.

Voilà mon code

Code : Tout sélectionner

Global path$=GetCurrentDirectory()
Global copy$=Chem$+"c:\windows\system32\cmd.exe" ; a modifier avec ton repertoire si différent.

parametres$="copy /B "+Chr(34)+"c:\test.txt"+Chr(34)+path$+"\test.txt"+Chr(34)
RunProgram(copy$,parametres$,"") ; ,#PB_Program_Hide
J'ai bien la CMD qui s'ouvre mais la commande copy ne s'affiche pas. :?:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

heu ... tu sais qu'il existe une commande native PB pour copier les fichiers ? :wink:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Thyphoon a écrit :heu ... tu sais qu'il existe une commande native PB pour copier les fichiers ? :wink:
(la vieille remarque :wink: )

Oui, mais ce n'est point le but de ma question.
Ce n'est pas tant la fonction copy que la manipulation de CMD.exe qui m'intéresse ici.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Message par Thyphoon »

Ar-S a écrit :
Thyphoon a écrit :heu ... tu sais qu'il existe une commande native PB pour copier les fichiers ? :wink:
(la vieille remarque :wink: )

Oui, mais ce n'est point le but de ma question.
Ce n'est pas tant la fonction copy que la manipulation de CMD.exe qui m'intéresse ici.
lollllllll autant pour moi alors :P
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tape donc cmd /? ; sinon, voici la liste des commandes de ce shell : http://technet.microsoft.com/fr-fr/libr ... n-us).aspx
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui ! voici l'exemple pour le Ping

Code : Tout sélectionner

prg=RunProgram("cmd.exe", "?/c ping 127.0.0.1", "", #PB_Program_Open|#PB_Program_Read)

If prg
    While ProgramRunning(prg)
        Debug ReadProgramString(prg)
    Wend
EndIf
CloseProgram(prg)
:)

ou ipconfig !!!

Code : Tout sélectionner

prg=RunProgram("cmd.exe", "?/c ipconfig /all", "", #PB_Program_Open|#PB_Program_Read)

If prg
  While ProgramRunning(prg)
    Debug ReadProgramString(prg)
  Wend
EndIf
CloseProgram(prg)

ps : pas besoin de mettre le chemin de cmd.exe !!!! :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

djes a écrit :Tape donc cmd /? ; sinon, voici la liste des commandes de ce shell : http://technet.microsoft.com/fr-fr/libr ... n-us).aspx
Je n'ai pas de soucis coté commande, c'est juste que je n'arrive pas à lui lancer la fonction copy /B fichier1 + fichier2 fichier3

@Dobro, je vais adapter ça pour le Copy.

Merci pour tes exemples, c'est très bon à savoir, la récupération des données dans le debugger c'est super.


----edit-----

Bon, après test, ça ne marche pas pourtant mes paramètres ont l'air corrects.

Code : Tout sélectionner

parametres$="copy /B "+Chr(34)+image$+Chr(34)+" + "+Chr(34)+archive$+Chr(34)+" "+FichierSortie$
prg=RunProgram(copy$,parametres$,"",#PB_Program_Open) ; ,#PB_Program_Hide
    If prg
                  ; MessageRequester("OK","ça marche"+Chr(10)+copy$+" "+parametres$)
                  SetClipboardText(copy$+" "+parametres$)
    endif

Les paramètres renvoyés dans le clipboard sont pourtant bon..
Une idée ?

P.S : image$ est un fichier image, archive$ est une archive rar ou autre, et fichiersortie$ est le fichier de sortie.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui c'est bizarre !!

ceci apparemment fonctionne , mais aucune copie n'est effectué ! 8O

Code : Tout sélectionner

prg=RunProgram("cmd.exe", "?/c copy "+Chr(34)+"d:\PureBasic\ readme.txt  d:\PureBasic\dobro\toto.txt"+Chr(34)+" /V", "", #PB_Program_Open|#PB_Program_Read)

If prg
  While ProgramRunning(prg)
    Debug ReadProgramString(prg)
  Wend
EndIf
CloseProgram(prg)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

faut toujours que ça m'arrive ce genre de connerie...

Le truc c'est que je voudrai comme cette fonction le permet de "joindre" 2 fichier en 1 seul, mais que les 2 soient utilisable...

Par exemple, en faisant copy /b fichierimage.jpg + archiverar.rar fichier_de_destination.jpg
On obtient un seul fichier (fichier_de_destination.jpg) et lorsque l'on clique dessus, on voit l'image, mais le mieux est que lorsqu'on ouvre ce même fichier avec winrar, on obtient le contenu du rar.

Comment gérer cela en PB ?
Sûrement avec des Size, create file et autres writefile mais je ne vois pas trop comment.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

le principe d'ajout a la fin d'un fichier c'est

Code : Tout sélectionner

text$="ceci est ajouté a la fin du fichier"
 Resultat = OpenFile(1, "tampon.txt")
FileSeek( Lof() ) ; va a la fin du fichier 
WriteString(1, text$) 
CloseFile(1)
:D

apres faut voir comment winrar ou winzip , va digérer ce genre de fichier !! :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Mais le principe est le même pour 2 fichiers binaires ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Ar-S a écrit :Mais le principe est le même pour 2 fichiers binaires ?
oui avec WriteByte(#Fichier, Nombre.b) par exemple
ou bien des long, etc .....

c'est du binaire dans ce cas !! :)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

J'ai utilisé l'inclusion de fichier et ça marche au poil !
Je fichier généré est bien visible mais est aussi ouvrable avec winrar

Choubidou !

Code : Tout sélectionner

DataSection
StartFile1:
IncludeBinary "c:\image.jpg"
EndFile1:

Deb2:
IncludeBinary "c:\archive.rar"
EndFile2:
EndDataSection
Size=?EndFile1-?StartFile1
Size2=?EndFile2-?Deb2
Size3=?EndFile2-?StartFile1

CreateFile(1,"c:\test.jpg")
WriteData(1, ?StartFile1,Size3)
CloseFile(1)
Le probleme avc includefile est que l'on ne peut pas utiliser un non de fichier qu'on récupère via un openrequesterfile.
exemple :
Image$=openrequesterfile.....
IncludeBinary Image$

ça entraînera un message d'erreur.
Je trouve ça dommage.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre