× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Autres langages
 Extraire tel ou tel fichier en BatchSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
griggione
  Posté le 21/02/2018 @ 09:29 
Aller en bas de la page 
Grand Maître astucien

Bonjour tous,

Dans un autre topic, je cherche une solution sans logiciel externe. En attendant, je me sers de winRar.

Mon problème, c'est que pour l'instant, je ne peux extraire que du dossier 01 (janvier) et j'aimerais pouvoir extraire de 02 (février), 03 etc.
Bref, ouvrir n'importe quel mois, sans avoir à modifier le .bat, surtout que je vais le mettre en exécutable.

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\decompresser\01"
set "destination=C:\decompresser\zip"
set "archive=*.zip"

Publicité
apolinaire
 Posté le 21/02/2018 à 10:14 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour griggione,

Peut-être en utilisant une variable ?

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\decompresser\"%1
set "destination=C:\decompresser\zip"
set "archive=*.zip"

Si ton fichier bat se nomme toto.bat :

toto 02 en ligne de commande sera équivalent à :

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\decompresser\02"
set "destination=C:\decompresser\zip"
set "archive=*.zip"

A tester ; il y a tellement longtemps que je n'ai pas joué à ça !

griggione
 Posté le 21/02/2018 à 11:01 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour apolinaire

Je me suis mal exprimé.
J'ai en fait 12 dossiers, de 01 à 12, d'où je dois extraire des fichier xml en troisième niveau. Je ne présente qu'un dossier à chaque fois pour l'extraction.
Jusque là, tout va bien, sauf que je dois modifier à chaque fois : set "source=C:\decompresser\01", set "source=C:\decompresser\02", etc.

1) pas de ligne de commande puisque je fais un exécutable et que je cache la fenêtre cmd, une msgbox me donne la fin du travail.
2) comment faire pour ne pas avoir de modif et que quelque soit le dossier, 01 ou 02 ou 03, etc., l'extraction se fasse quand même.

apolinaire
 Posté le 21/02/2018 à 11:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bon, je ne suis pas certain d'avoir encore bien compris ton besoin mais je fais des efforts ! Est-ce que cette boucle pourrait fonctionner ?

for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\decompresser\"%%m
set "destination=C:\decompresser\zip"
set "archive=*.zip"
)

Peut-être un problème, ça va tourner très très vite et quasiment lancer les 12 opérations en même temps...

griggione
 Posté le 21/02/2018 à 14:43 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
apolinaire a écrit :

Bon, je ne suis pas certain d'avoir encore bien compris ton besoin mais je fais des efforts !

RE

L'arborescence :

decompresser
..... 01
..... 02
..... etc.
.......... 20180105.zip
.......... 20180103.zip
.......... etc.zip
............... PUB_CA_01.zip
............... PUB_CA_02.zip
............... etc.zip
.................... PUB_CA_02.xml

Je met ça mais faut juste tenir compte des dossiers 01, 02, etc.
Je répète, tout marche bien, sauf que je dois changer le nom du dossier à, chaque fois (set "source=C:\decompresser\01"), et ça, c'est le problème .....

J'ai essayé, en rectifiant :

for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\decompresser\%%m"
set "destination=C:\decompresser\zip"
set "archive=*.zip"
)

Mais, ça ne donne rien, en tout cas, c'est l'idée.

apolinaire a écrit :Peut-être un problème, ça va tourner très très vite et quasiment lancer les 12 opérations en même temps...

Comme dit au-dessus, il n'y aura dans le répertoire "decompresser", qu'un seul dossier 01, 02, etc.



Modifié par griggione le 21/02/2018 15:05
griggione
 Posté le 21/02/2018 à 15:44 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

J'ai aussi autre chose qui me chagrine ...

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\decompresser\01"
set "destination=C:\decompresser\zip"
set "archive=*.zip"

Donc ça marche bien, mais si je veux me mettre dans Program Files, ça marche pas

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "source=C:\Program Files\decompresser\01"
set "destination=C:\Program Files\decompresser\zip"
set "archive=*.zip"

apolinaire
 Posté le 21/02/2018 à 15:59 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Au sujet de Program Files, c'est normal ; tu ne peux pas y écrire "nativement", même si tu es administrateur ! Voilà ce qu'on obtient en interactif :

apolinaire
 Posté le 21/02/2018 à 16:38 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Aller, encore une petite idée.

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "destination=C:\decompresser\zip"
set "archive=*.zip"
for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
if exist "C:\decompresser\%%m"
set "source=C:\decompresser\%%m"
)

Les variables unzip, destination et archive sont initialisées. La variable source ne l'est qu'avec le dossier présent qui a un nom entre 01 et 12.

griggione
 Posté le 21/02/2018 à 17:48 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
apolinaire a écrit :

Au sujet de Program Files, c'est normal ; tu ne peux pas y écrire "nativement", même si tu es administrateur ! Voilà ce qu'on obtient en interactif :

RE

He oui, c'est vrai en plus.
Pourtant, ce qui est bizzare, c'est que j'ai fait un autre code d'extraction de .csv, ou le dossier est installé en Program Files.
Ces fichiers sont dans des dossiers, pas zippés.

@echo off
for /R /D %%f in (*) do move "%%f\*actes.csv" "Actes".
for /R /D %%f in (*) do move "%%f\*comptes_annuels.csv" "Comptes annuels".
pause

REM actes => Actes
REM comptes_annuels => Comptes annuels

Ca passe pas non plus, même pas d'affichage du cmd

apolinaire a écrit :

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "destination=C:\decompresser\zip"
set "archive=*.zip"
for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
if exist "C:\decompresser\%%m"
set "source=C:\decompresser\%%m"
)

.



Modifié par griggione le 21/02/2018 17:49
Publicité
apolinaire
 Posté le 21/02/2018 à 18:07 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Il faut peut-être que la commande qui suit le if soit sur la même ligne, comme :

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
set "destination=C:\decompresser\zip"
set "archive=*.zip"
for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
if exist "C:\decompresser\%%m" set "source=C:\decompresser\%%m"
)

griggione
 Posté le 22/02/2018 à 08:41 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

Bonjour apolinaire

En gardant l'ordre du chemin d'exécution.

set "unzip=C:\Program Files\WinRAR\WinRAR.exe"
for %%m in (01 02 03 04 05 06 07 08 09 10 11 12) do (
if exist "C:\decompresser\%%m" set "source=C:\decompresser\%%m"
)
set "destination=C:\decompresser\zip"
set "archive=*.zip"

Une seule archive est extraite, la 1ere en numéro. Si je met les dossiers 03 et 10, c'est le 03 qui est sélectionné.
Mais ça me va trés bien comme ça, en attendant que peut-être, on puisse mettre 2 dossiers.

Je ne dirais qu'un mot, apolinaire

apolinaire
 Posté le 22/02/2018 à 11:26 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour griggione,

griggione a écrit :

Une seule archive est extraite, la 1ere en numéro. Si je met les dossiers 03 et 10, c'est le 03 qui est sélectionné.

Mais ça me va très bien comme ça, en attendant que peut-être, on puisse mettre 2 dossiers.

Ben là, tu me fais des misères ! Souviens toi :

griggione a écrit :

Je ne présente qu'un dossier à chaque fois pour l'extraction.

griggione a écrit :

Comme dit au-dessus, il n'y aura dans le répertoire "decompresser", qu'un seul dossier 01, 02, etc.

Récapitulons. Ton extrait de code ci-dessus ne fait que définir 4 variables dites "d'environnement" en langage batch. Et une telle variable ne dure que le temps où la fenêtre de commande est ouverte. Après ta série de "set", il doit bien y avoir une commande d'action utilisant ces variables. Mais une variable ne pouvant contenir qu'une seule valeur, l'action est exécutée avec cette valeur et pfuittt, tout se ferme.

Pour envisager un travail sur 2 dossiers ou plus, il faudrait insérer tout ça dans une boucle en demandant d'attendre la fin du premier processus pour lancer le suivant. Une telle attente se fait par la commande "start /wait <commande>".

Mais est-ce bien utile si tu ne traites qu'un dossier mensuel à la fois ?

En attendant je suis bien content d'avoir pu t'apporter un peu d'aide.
Bonne journée à toi.

griggione
 Posté le 22/02/2018 à 11:35 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
apolinaire a écrit :

Ben là, tu me fais des misères ! Souviens toi :

RE

Exact, et franchement, pour l'instant, je suis bien content, le contrat est rempli

J'ai déjà fait l'exécutable et maintenant, faut que je fasse un setup d'installation pour mettre tout ça en place.
Je pense qu'avec Inno ça devrait se faire, quoique pour les dossiers, je cale un peu, mais j'ouvrirais un autre topic

apolinaire a écrit :

Pour envisager un travail sur 2 dossiers ou plus, il faudrait insérer tout ça dans une boucle en demandant d'attendre la fin du premier processus pour lancer le suivant. Une telle attente se fait par la commande "start /wait <commande>".

C'était plus par curiosité qu'autre chose.

Merci encore

griggione
 Posté le 22/02/2018 à 11:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

J'oubliai

Je me suis récupéré un winRar portable que j'ai mis dans le répertoire "decompresser".
Ce qui fait que je peux installer dans n'importe quelle machine sans installation en dur de winRar

Constance
 Posté le 22/02/2018 à 14:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Astucien

Salut .o/

Euh OK mais alors tu ne respectes pas ton propre pré-requis "sans logiciel externe".

Ou alors tu voulais dire "sans s'appuyer sur un logiciel installé", auquel cas on aurait pu dès le départ te proposer des outils portables en ligne de commande, ce qui aurait grandement simplifié les choses.



Modifié par Constance le 22/02/2018 14:21
griggione
 Posté le 22/02/2018 à 16:25 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
Constance a écrit :

Euh OK mais alors tu ne respectes pas ton propre pré-requis "sans logiciel externe".

Bonjour Constance,

Message original par griggione

Dans un autre topic, je cherche une solution sans logiciel externe. En attendant, je me sers de winRar.

C'est toujours en cours malgré qu'on ne trouve pas, si tu as une soluce, tu est la bienvenue

C'est sur que je préférerais ...

griggione
 Posté le 22/02/2018 à 16:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
Constance a écrit :

auquel cas on aurait pu dès le départ te proposer des outils portables en ligne de commande,...

RE

Et surtout, pas en ligne de commande.
Faut que je puisse faire un exécutable et un installateur

Publicité
Titus68
 Posté le 22/02/2018 à 17:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Griggione,

Et surtout, pas en ligne de commande.Faut que je puisse faire un exécutable et un installateur

A noter que tu pourrais quand même faire un exe qui exécute des lignes de commandes (sans que tu ne vois de fenêtre qui s'ouvre).

En vba ou Vbs, tu peux toujours te baser sur la commande Wshshell :

http://jc.bellamy.free.fr/fr/vbsobj/wsmthrun.html

griggione
 Posté le 22/02/2018 à 17:39 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien

RE

Exact et je peux lancer le vbs via un bat et faire un exécutable du bat

http://jc.bellamy.free.fr/fr/vbsobj/wsmthrun.html

Je vois que toi aussi, tu connais les bonnes adresses

Titus68
 Posté le 22/02/2018 à 17:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Tu peux aussi faire un exe à partir d'un vbs

A l'époque j'utilisais (çà fait longtemps) :

http://www.vbsedit.com/faq/convertexe.asp

Sinon j'ai un autre programme qui convertit vbs en exe mais je ne sais plus où je l'avais trouvé mais c'est plus du bricolage.

Pour faire des exe j'utilise encore vb6 l'ancêtre du vb.net mais c'était un logiciel payant de Microsoft par contre question exe c'est plus adapté.

Sinon il faudrait s'orienter vers vb.net : tu pourrais alors faire des exe avec des masques de saisie ... mais la prise en main n'est pas évidente au départ par contre question possibilité c'est pratiquement illimité.



Modifié par Titus68 le 22/02/2018 17:57
apolinaire
 Posté le 22/02/2018 à 18:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Titus68 a écrit :

Pour faire des exe j'utilise encore vb6 l'ancêtre du vb.net mais c'était un logiciel payant de Microsoft par contre question exe c'est plus adapté.

Bonjour Titus68,

AH! VB6 ! J'en ai écrit des lignes de codes avec. Et j'en écris encore à l'occasion. Un langage Basic plus facile que celui de Visual Studio et qui permet déjà de faire beaucoup de choses.

Et comme il fonctionne encore très bien sous Windows 10, on aurait tord de l'oublier trop vite.

griggione
 Posté le 23/02/2018 à 09:21 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
  Grand Maître astucien
apolinaire a écrit :

Et comme il fonctionne encore très bien sous Windows 10, on aurait tord de l'oublier trop vite.

RE

Tient, c'est bon à savoir ça !

Publicité
Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
21,59 €Batterie CHOETECH 10 000 mAh (USB C PD, USB QC, induction Qi sans fil) à 21,59 €
Valable jusqu'au 22 Septembre

Amazon fait une promotion sur la batterie CHOETECH 10 000 mAh qui passe à 21,59 € grâce à un coupon de réduction à appliquer sur la page du produit. Ce chargeur de 10 000 mAh dispose d'un port USB C PowerDelivery 18W, d'un port USB QC 18W et permet également de récharger sans fil via induction un appareil compatible Qi (10W).


> Voir l'offre
135,88 €Mini PC Acute Angle AA-B4 (Celeron N3450, 8Go RAM, 64Go+SSD 128Go) à 135,88 €
Valable jusqu'au 22 Septembre

Gearbest fait une promotion sur l'ordinateur Acute Angle AA - B4 qui passe à 135,88 € au lieu de 180 € grâce au code promo GBCNSJXPC. Ce mini PC au design atypique et au corps en bois, intègre un processeur Intel Celeron N3450 (4 coeurs de 1,1 à 2,2 GHz), 8 Go de RAM, un espace de stockage de 64 Go EMMC ainsi qu'un SSD de 128 Go. Il possède également le WiFi5, le Bluetooth 5.0, une prise Ethernet Gigabit, 3 ports USB 3.0, une sortie HDMI. L'ordinateur est livré avec une prise électrique européenne. Il est accompagné de Windows 10 Familial. Avec ce PC, vous pourrez réaliser sans soucis toutes vos tâches courantes : internet, bureautique, multimédia.

Ce marchand sérieux se trouvant en Chine, la livraison peut prendre une quinzaine de jours. Comptez 5,62 € pour la livraison en France et l'assurance pour le transport. Vous pouvez payer par carte bancaire ou par Paypal (conseillé pour bénéficier de la garantie Paypal).


> Voir l'offre
136,36 €Disque dur externe USB 3.0 Seagate 8 To à 149,99 €
Valable jusqu'au 21 Septembre

Amazon propose actuellement le disque dur Seagate Expansion Desktop Drive 8 To à 149,99 € livré gratuitement alors qu'on le trouve ailleurs à partir de 200 €. Le disque est non soudé et vous pourez le récupérer pour l'utiliser dans un ordinateur, un NAS, etc. Connexion USB 3.0.


> Voir l'offre

Sujets relatifs
Quel langage pour extraire un fichier de zip 3e niveau
Extraire une image d'un fichier SWF
Git Bash & fichier batch
Fichier batch : lancer 1 video sur VLC portable
BATCH SUPPRIMER LIGNES FICHIER CSV
Batch : chercher un fichier et ajouter des lignes
Petit coup de main pour un fichier "batch" svp
fichier batch
[résolu] [fichier batch] copie...
[RESOLU] Améliration d'un batch - liste de fichier
Plus de sujets relatifs à Extraire tel ou tel fichier en Batch
 > Tous les forums > Forum Autres langages