J'écris un script qui convertit un fichier Markdown en fichier PDF, facilité par Pandoc. Donc, si vous faites glisser C:\Users\User\Documents\English\PAPER1.md
sur le script, cela créera C:\Users\User\Documents\English\PDFs\PAPER1.pdf
.Windows CMD développez le nom de fichier si le fichier a .double.extension
Ceci est réalisé dans l'en-tête du script via
set INPUT=%1
set PDFDIR=%~dp1\PDFs
set PDF=%PDFDIR%\%~n1.pdf
Cependant, dans certaines circonstances, le nom du fichier d'entrée sera Something.md.txt
, dans ce cas, je ne veux toujours à la sortie Something.pdf
. (La suppression de plus de trois extensions ne sera probablement pas nécessaire ou souhaitable.)
Mais la configuration actuelle ne supprime qu'une extension, produisant Something.md.pdf
.
Cependant, %~nn1.pdf
ne fonctionne pas, ni ne set p=%~n1
set PDF=%~np
, donnant
The following usage of the path operator in batch-parameter
substitution is invalid: %~np
Comment puis-je obtenir le nom nu d'un fichier avec « deux extensions »?
Cela fonctionne avec un _OU_ deux extensions: 'pour %% un dans ("% de% de nom de fichier") pour ne %% b dans ("%% ~ Na") ne réglez « newName = %% ~ Nb.pdf "' – Aacini
En supposant que votre nom de fichier ne comporte aucune période vous réelle besoin dans le nom de fichier: 'FOR/F" tokens = 1 * delims =. " %% G IN ("% ~ nx1") nom de l'ensemble = %% G' – Squashman