
DOSのバッチの初心者です。
$FILEという変数に、
C:\Documents and Settings\Administrator\My Documents\okwave.txt
のようにファイル名がフルパスで入ってくるとします。このファイル名だけ(okwave.txt)を別の変数に入れたいのですが、うまくいきません。
set f=%$FILE%
set g=%%~nf
echo %g%
上のように書いてみたのですが、変数gは%~nfという値が入ってしまいます。どう直せばよいでしょうか。
No.1ベストアンサー
- 回答日時:
> set f=%$FILE%
> set g=%%~nf
> echo %g%
上のスクリプトは、下記に載っているような、バッチファイルのパラメタ修飾子を参考になされたと、思います。
http://ykr414.com/dos/bat.html#05
これらは、バッチファイル起動時に与えられたパラメタに対する修飾子であり、バッチ変数に対するものではありません。
ここでは、 batch01.bat と batch02.bat という二つのスクリプトを作成します。
batch02.bat では、
@echo off
echo %~n1%~x1
batch01.bat では、
@echo off
call test02.bat "%$FILE%"
以上のようにすれば、 $FILE 変数が batch02.bat の第一パラメタとして与えられるので、これをパラメタ修飾子で分解すれば、ファイル名だけを取り出すことができます。
教えていただいた方法でできました!
>> 上のスクリプトは、下記に載っているような、バッチファイルのパラメタ修飾子を参考になされたと、思います。
http://ykr414.com/dos/bat.html#05
そうです。そのサイトを見て書きました。そこではいろいろ勉強になったのですが、この件ではパラメータを使った例しか書いていなかったのです(本も読んでみましたが、やはりパラメータの例ばかり)。
変数の場合は、サブルーチンを使うとは!
とても助かりました。ありがとうございます。
No.2
- 回答日時:
%%~nf のような修飾子は、同じバッチファイル内では、for文の変数か、call文の引数かで取り出すことが出来ます。
(No.1さんのように別のバッチの引数でも可)
ここではfor文を使う例です。
echo %$FILE%
for /F "delims=" %%F in ('echo %$FILE%') do set g=%%~nxF
echo %g%
meglin888です。レスありがとうございます。
for文はファイルを操作するものだと認識しておりましたが、こんなことにも使えるのですね。
ところでこのような技はどうすれば身につくのでしょう。個々のコマンドについての基本的な説明ですと、いい本やサイトがいっぱいあります。
しかしバッチファイルの書き方やこうした裏技?についてはどのあたりを見ればよいのでしょう。検討もつきません。
もしお勧めがありましたら、ぜひ教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iOS ファイルの名前変更 2 2022/08/11 20:47
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- その他(プログラミング・Web制作) ファイル名の一部をbatで変更したい batファイルを使って、以下のようにファイル名の一部を変更した 3 2023/02/21 20:09
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) batにて、異なるフォルダの同名ファイルを参照し、文字列を判別。擬似配列で変数へ格納 3 2022/04/10 03:37
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
CMDの「Explorer」
-
バッチで自動的にディレクトリ...
-
【Bシェル】戻り値取得について
-
バッジファイルで複数のコマン...
-
IEのバージョンチェックとバー...
-
バッチファイルでDirで取得した...
-
バッチファイル テキストファイ...
-
DOSプロンプトで2つプログラム...
-
マクロ機能のあるFTPクライアン...
-
MS-DOSのバッチで変数を使いたい
-
バッチでテキストファイルから...
-
絶対パス名からファイル名を取...
-
大量のフォルダからひとつのフ...
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
'msimg32.lib'は通常どこにある...
-
AccessへのCSVファイルの取...
-
バッチファイルで配列を使いたい
-
EXCELを使ったファイル削除
-
binファイルを解凍したいの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチでテキストファイルから...
-
バッチファイルで昨日の日付を取得
-
子バッチ内のキー入力処理へ自...
-
バッチファイルでDirで取得した...
-
コマンドプロンプト標準出力と...
-
バッチファイルで常に最新の現...
-
DOSのバッチで、変数中のファイ...
-
VBアプリケーションで終了コー...
-
コマンドプロンプトで2ヶ月前3...
-
IPアドレスの第3オクテットだ...
-
コマンドプロンプト画面の閉じ...
-
コマンドプロンプト(バッチファ...
-
絶対パス名からファイル名を取...
-
バッチファイル テキストファイ...
-
Excelで住所録を地域ごとに振り...
-
コマンドプロンプトでファイル...
-
batの変数を直接vbsのプログラ...
-
echoとsystem関数について
-
コマンドプロンプト(バッチ)...
-
呼び出し元バッチを知るには?
おすすめ情報