> 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 !


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