PDA

Voir la version complète : [Resolu] Utilisation de Pandoc sous windows



Whiskey
13/03/2021, 16h56
Hello,

Dites j'ai un petit soucis, en ce moment j'utilise pas mal Markdown et pour l'assemblage je dois apparemment utiliser le petit logiciel pandoc. Je suis sur windows et j'utilise powershell. Pour expliquer mon soucis je vais prendre un exemple :

- Imaginons que j'ai 5 fichiers Markdown (01-fichier1.md, 02-fichier2.md... 05-fichier5.md) que je veux regrouper en un fichier, pour faire simple :



pandoc -o output.pdf *.md


Or, la commande ne marche pas. En effet *.md n'est pas reconnu en powershell mais uniquement en shell sh ou bash. Pour bien faire faudrait faire cela:



pandoc -o output.pdf 01-fichier1.md 02-fichier2.md 03-fichier3.md 04-fichier4.md 05-fichier5.md


Là ca marche très bien, cependant vous imaginez si le dossier contient des centaines de fichier md.... ca deviendrais chiant :(

La question est simple : Y a t-il un moyen en powershell ou cmd standard capable de gérer le *.md, afin de lister tout les fichier .md présent ?

Merci d'avance.

deathdigger
13/03/2021, 17h31
Si je ne m'abuse, ta commande *.md dépend du programme pandoc, pas de powershell ou autres. Du coup, s'ils n'ont pas prévu de comprendre *.md, ça ne marchera jamais.
J'ai fait le test en powershell, un simple
copy *.txt .\toto\

marche. Le souci ne vient donc pas de là.

Whiskey
13/03/2021, 17h59
Si je ne m'abuse, ta commande *.md dépend du programme pandoc, pas de powershell ou autres. Du coup, s'ils n'ont pas prévu de comprendre *.md, ça ne marchera jamais.
J'ai fait le test en powershell, un simple
copy *.txt .\toto\

marche. Le souci ne vient donc pas de là.

Effectivement, j'ai testé ta commande et cela marche. Par contre je comprend pas, la plupart des tutos sur pandoc que j'ai pu voir utilise tres bien *.md et ca marche chez eux.... A ne rien comprendre :(

Bon cela m'envoi sur une autre piste. Je continu a chercher :p

Merci en tout cas pour ta réponse.

Cwningen
13/03/2021, 22h54
Je connais pas bien ni powershell ni pandoc. Mais Internet connait powershell (https://stackoverflow.com/questions/21962164/can-powershell-do-filename-expansion). Pour cmd, on doit pouvoir faire quelque chose à base de for, mais c'est moche.

Sinon, si tu aimes bash tu peux l'utiliser sous Windows. MSYS2 (https://www.msys2.org/) installe bash et plein d'autres outils. Git for Windows (https://gitforwindows.org/) fournit également un bash.

Whiskey
13/03/2021, 23h27
Je connais pas bien ni powershell ni pandoc. Mais Internet connait powershell (https://stackoverflow.com/questions/21962164/can-powershell-do-filename-expansion). Pour cmd, on doit pouvoir faire quelque chose à base de for, mais c'est moche.

Sinon, si tu aimes bash tu peux l'utiliser sous Windows. MSYS2 (https://www.msys2.org/) installe bash et plein d'autres outils. Git for Windows (https://gitforwindows.org/) fournit également un bash.

Ce serait une solution effectivement, je garde cela sous le coude. Cependant, comme le dit deathdigger, *.md semble bien marché sur du powershell, mais cela foire sur pandoc (dernière version compilé pour windows). Faudrait tester avec une ancienne version de pandoc, peut etre un soucis de version.

EDIT:

Bon je viens de tester avec git-bash et ca passe crème :(

Cela veut dire que powershell/cmd de base ne supporte pas le *.md de base, mais certaines commande powershell tel que copy supporte au sein de l'application. Bon à savoir.

Me reste 2 possibilités :

- Utiliser git-bash
- Utiliser un langage/script (en Go par exemple, ou via node) pour générer le tout.

Merci pour ta réponse :)

deathdigger
14/03/2021, 11h05
T'as essayé en fournissant le path vers le dossier ?

Cwningen
14/03/2021, 11h07
Tu as lu le lien stackoverflow ? Il y a des commandes qui supportent l'étoile et dont le rôle est de te donner une liste de fichier : dir et Get-ChildItem. Il faut les combiner avec une substitution de commande ("$(...)" en powershell si j'ai bien compris). C'est un peu plus verbeux que bash mais ça passe (surtout comparé aux solutions de cmd.exe).

Whiskey
14/03/2021, 11h50
En gros dès que je lance pandoc avec *.md dedans il me met :


pandoc.exe: *.md: openBinaryFile: invalid argument (Invalid argument)

Et cela en powershell ou simple cmd (pas en bash).

La plupart de mes recherches sur cette erreur affiche que le soucis viens bien de powershell ou cmd et que c'est propre a du bash. Et la solution est : Soit passer sur un bash, soit taper tout les fichiers ^^

- - - Mise à jour - - -


T'as essayé en fournissant le path vers le dossier ?

Tout les fichier sont a la racine pour le test, donc normalement, il devrait trouver les fichiers. Ce qui est le cas si je tape la meme commande dans un client bash.

Cwningen
14/03/2021, 11h55
Essaye
pandoc -o output.pdf "$(Get-ChildItem *.md -Name)"

Whiskey
14/03/2021, 12h02
Essaye
pandoc -o output.pdf "$(Get-ChildItem *.md -Name)"

Avec ta commande j'obtiens :


pandoc.exe: 00-metadata.md 01-readme.md 02-readme2.md: openBinaryFile: does not exist (No such file or directory)

Techniquement il liste bien tout les fichier md, mais pandoc refuse de le traiter :p Mais l'idée était intéressante.

Cwningen
14/03/2021, 12h12
Ok, c'est passé comme une seule chaine. Essaye sans les guillemets :

pandoc -o output.pdf $(Get-ChildItem *.md -Name)
ou encore

pandoc -o output.pdf $(dir *.md)
Il y aura peut-être des problèmes si tes fichiers ont des espaces dans leurs noms.

Désolé, j'ai pas de powershell sous la main pour essayer moi-même.

Whiskey
14/03/2021, 12h15
Ok, c'est passé comme une seule chaine. Essaye sans les guillemets :

pandoc -o output.pdf $(Get-ChildItem *.md -Name)
ou encore

pandoc -o output.pdf $(dir *.md)
Il y aura peut-être des problèmes si tes fichiers ont des espaces dans leurs noms.

Désolé, j'ai pas de powershell sous la main pour essayer moi-même.

Je viens de tester tes 2 commandes et .... cela fonctionne. :wub: :wub: :wub: Bon ben problème résolu :p

Merci pour ton aide.