絶対パスから部分文字列を削除する Windows スクリプト

絶対パスから部分文字列を削除する Windows スクリプト

私は Windows スクリプトの初心者で、次のような絶対パスがあり/bin/debug/test/abc.xyz.dll、ファイル名を削除して、出力のようなパスのみを取得したいと考えています/bin/debug/test/

どうすればいいでしょうか?

答え1

FORループしない場合でも、ループ の拡張機能を使用することができます。

@echo off
setlocal EnableExtensions
set "arg=%~1"
for /f %%A in ('echo %arg%') do echo %%~pA

このスクリプトは完全なファイル名で呼び出され、ファイル名内のスペースを保護するために引用符で囲まれる場合もあります。

編集: 元のコードでecho %%~nxAは明らかに間違っていました。申し訳ありません。ファイル名をパスから分離し、ファイル名を返します。上記のコードは、パスのみを返します (ドライブ文字なし)。

編集2: @Karanがこれを次のように省略できることを指摘してくれたことに感謝します。

@echo off
setlocal EnableExtensions
echo %~p1

拡張変数展開構文はFORループだけでなく、引数の拡張も同様です (CALL /? を参照)。

関連情報