Ich schreibe ein Skript, das eine Markdown-Datei in ein PDF konvertiert, erleichtert von Pandoc. Wenn Sie C:\Users\User\Documents\English\PAPER1.md
in das Skript ziehen, wird C:\Users\User\Documents\English\PDFs\PAPER1.pdf
erstellt. DieseWindows CMD Dateinamen erweitern, wenn Datei .double.extension hat
im Header des Skripts erreicht über
set INPUT=%1
set PDFDIR=%~dp1\PDFs
set PDF=%PDFDIR%\%~n1.pdf
jedoch unter bestimmten Umständen wird die Eingabedatei Something.md.txt
sein, wobei in diesem Fall möchte ich nur noch die Ausgabe Something.pdf
. (Das Entfernen von mehr als drei Erweiterungen wird wahrscheinlich nicht notwendig oder wünschenswert sein.)
Aber das aktuelle Setup streift nur eine Erweiterung ab und produziert Something.md.pdf
.
Allerdings ist %~nn1.pdf
nicht, noch tut set p=%~n1
set PDF=%~np
,
The following usage of the path operator in batch-parameter
substitution is invalid: %~np
geben Wie kann ich den reinen Dateinamen einer Datei mit „zwei Erweiterungen“ bekommen?
Dieses mit einem _or_ zwei Erweiterungen funktioniert: 'für %% einer in ("% filename%") in ("%% ~ Na") für %% b tun set„newName = %% ~ Nb.pdf "' – Aacini
Vorausgesetzt, Ihr Dateiname hat keine Punkte Sie tatsächlich brauche ich im Dateinamen: 'FOR/F" Token = 1 * delims =. " %% G IN ("% ~ nx1") setze name = %% G' – Squashman