Home > 雑記 > [Windowsコマンドプロンプト]引数の処理

[Windowsコマンドプロンプト]引数の処理

.batにドラッグ&ドロップしたファイルのパスが取得したいなということで、調べたら見つかりました。
リンク  


そして一応自分用にまとめ。

例: aaa\bbb.abc → aaa\bbb.def

%~d1
cd %~p1
ren %~1 %~n1.def

%~d1→%1をドライブ名だけに展開する。
%~p1→%1をパスだけに展開する。
%~n1→%1をファイル名だけに展開する。

なるほど、%~d1はドライブ、、、
Windowsのバッチはドライブの扱いが面倒です。
cdだけじゃ移動できんてどういう、、、

ちなみにたとえばこんなbatがあるとします。

echo %~d1
echo %~p1
echo %~n1
echo %~1

ほんでそれをtest.batとして、引数与えて実行してみます。

test.bat "C:\Documents and Settings\username\image.tif"

すると結果はこうです。

C:
\Documents and Settings\username\
image
C:\Documents and Settings\username\image.tif

で、ドライブとディレクトリを両方とりたい場合は、
%~dp1って感じで併せて使うことが可能なようです。

そうすると上記例の場合、
C:\Documents and Settings\username\
って感じで取得できますね。

こういうのまとめてくれてる方がいて、ホントに助かります。感謝。

Comments:6

Co, 2009/02/10

これ便利だね。
AEのレンダリングでたいしてオプションも指定できないのにパス書き換えるの面倒だったから助かったよ。
CS3のマルチマシン設定が微妙でメモリ不足で止まったりするから、バッチ四つ立ち上げて回した方が速い事が多いから重宝しますわ。

tai 2009/02/11

>Co,さん
きっかけは某社の制作さんが書いてたbatなんですけどね:P

AEのレンダリングとかいいかも、ですね確かに。
ドラッグ&ドロップでレンダリング。

Co, 2009/02/13

>マルチマシン設定
マルチスレッド設定の間違いですね。
CS4は大分マシなんですが…。

>ドラッグ&ドロップでレンダリング
まさにそんな感じ。バッチも一行で済むしお手軽です。
右クリックの送るに登録してしまいました。

tai 2009/02/13

>Co,さん
CS3のマルチスレッド、CPUあるだけ使っちゃおうとするらしいですね、、、
すぐにメモリが足りなくなりそう。

右クリックに登録するのいいですね!
それは僕も真似しようかな。

匿名 2010/03/10

> cdだけじゃ移動できんてどういう、、、

cd /d を使うとよいと思います。

tai 2010/03/12

>匿名さん
コメントどもです。

cd /d!!
それは知りませんでした!
今度試してみます。

ありがとうございます!

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.taikomatsu.com/2009/02/09/windows%e3%82%b3%e3%83%9e%e3%83%b3%e3%83%89%e3%83%97%e3%83%ad%e3%83%b3%e3%83%97%e3%83%88%e5%bc%95%e6%95%b0%e3%81%ae%e5%87%a6%e7%90%86/trackback/
Listed below are links to weblogs that reference
[Windowsコマンドプロンプト]引数の処理 from memlog

Home > 雑記 > [Windowsコマンドプロンプト]引数の処理

Return to page top