• ベストアンサー

絶対パス名からファイル名を取り出して、変数に格納するバッチ

DOSコマンドバッチで定義した変数"fullpath"に絶対フルパス名が格納されているとします。 この変数からファイル名だけを抽出して別の変数"filenae"に格納したいのですが方法がわかりません。 1. set fullpath = "C:\test\test.c" 2. ----ここの部分をどのように処理すれば?------ 3. set filename = fullpathから抽出したファイル名 私がやってみた方法として、for文とdir /bを組み合わせてみたのですが for %a in ( dir /b c:\test\test.c ) do set filename =%a 本来dir /bを実行するとファイル名のみが表示されるのに、For文をかますと絶対フルパスでfilenameに値が格納されてしまいます。 dir /b c:\test\test.cの結果を直接filename変数に格納できれば解決するのですが、コマンド結果を変数に格納するにはFor文を使わないとだめなんですよね? なにかよい方法はないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

@echo OFF setlocal set fullpath="C:\test\test2.c" Call :BASENAME %fullpath% echo %fname% Goto :EOF :BASENAME set fname=%~nx1 詳しくは、call /? または for /?

caramel200
質問者

お礼

わざわざソースで教えていただきありがとうございました!! 引数指定を使ってファイル名だけを取り出す方法も考えていたのですが callを利用する手があるとは考えつかなかったです。 非常に助かりました。

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

for の変数にも ~なんちゃら をつけることができたような.

caramel200
質問者

お礼

ありがとうございます

関連するQ&A