web-dev-qa-db-ja.com

Windowsバッチスクリプトで拡張子なしのファイル名を取得する

YUIコンプレッサーでJavaScriptファイルを圧縮するための右クリックコンテキストメニューコマンドを作成しようとしています。私の究極の目標は、これをコンテキストメニューで実行できるようにすることです。

Java.exe -jar yuicompressor-2.4.2.jar -o <filename>.min.js <filename>.js

変数%1を使用して、開いているファイル名を参照できることを知っています。このコマンドをバッチファイル構文に変換する方法がわからず、オンラインで回答を見つけることができませんでした。

更新:
ジェレミーの回答(+コメント)は機能しました。これにつまずく人のために、ここに私がしなければならなかったことがあります:

JavaScriptファイル用に作成したアクションでは、これをコマンドとして使用しました。

minify.bat "%1"

次のようなバッチスクリプトを呼び出します。

Java.exe -jar yuicompressor-2.4.2.jar -o "%~dpn1.min.js" %1

バッチスクリプトの場合、上記のコードはJava.exeとyuicompressorのディレクトリが両方ともPATH変数に追加されることを想定していることに注意してください。これらをパスに追加しない場合は、ファイルのフルパスを使用する必要があります。

シーケンス%~dpnは、以下を取得するために使用されます。

  1. %~d-ドライブ
  2. %~p-パス
  3. %~n-ファイル名
53
Dan Herbert

バッチファイルを呼び出すアクションを変更します。

RunCompressor.bat "%1"

つかいます %~n1 RunCompressor.batで拡張子なしのファイル名を取得するには:

start javaw.exe -jar yuicompressor-2.4.2.jar -o "%~n1.min.js" "%1"

役に立つ記事

start javaw.exeは、バッチファイルの実行時にコマンドウィンドウを閉じます。

46
Jeremy Stein
echo path of this file name is: %~dp0
echo file name of this file without extension is:%~n0
echo file extention of this file is:%~x0
echo The file name of this file is: %~nx0
7
lygstate

YUIコンプレッサーに送信する出力ファイル名を決定する独自のクラスを作成します。

Java.exe -cp yuicompressor-2.4.2.jar MyClass "%1"
0
Jeremy Stein