ディレクトリ パスをパラメーターとして使用するバッチ ファイルがあります。
そのファイル フォルダーには、jpg に変換する必要がある .ai.pdf または .pdf ファイルがいくつもあります。変換は私の問題ではありません (私は imageMagick を使用しています) が、完全な拡張子を削除することは問題です。
ファイル名から完全な .ai.pdf (7 文字) または .pdf (4 文字) を削除して .jpg に置き換えることができる必要があります。 for ループで ~n だけを使用することはできません。 .ai.pdf があるインスタンスで .ai を削除します (ファイル名だけが必要なファイル名.ai になります)
この StackOverFlow の例については、StackOverFlow に関するかなりの数の投稿があります。
しかし、何をしようとしても、ファイル名から適切な量の拡張子を切り捨てるとエラーが発生します。
これが私のコードです。これは私がこれまでに作成した最初の主要なバッチ ファイルであるため、作業を行うためのプログラムをさらにインストールする以外は、何でも受け入れます。
私を殺したのは、これが機能していて、あるサーバーから別のサーバーへのシャッフルと1週間の休暇で、作業コードが....置き違えられたことです。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set dir1=%1
echo recieved !dir1!
for /R %dir1% %%a in (*.pdf) DO (
echo file found !a!
set b=th_%%~nxa
if x%b:ai.pdf=%==x%b% set b=%%~dpa!b:~0,-7!
if not x%b:ai.pdf=%==x%b% set b=%%~dpa!b:~0,-4!
REM convert -density 64 "%%a" +matte -resize 15%% "!b!.jpg"
@echo !b! converted
)
ENDLOCAL
ファイルは %~dpa!b:~0,-7!と教えてくれます。は無効な置換です
何か案は?助けてくれてありがとう!