[解決済み】バッチファイルで部分文字列を実行する最適な方法は?
2022-04-10 22:58:59
質問
現在実行中のバッチファイル名を取得したい がない場合 拡張子
ありがとうございます このリンク ファイル名は と しかし、バッチファイル内で部分文字列を実行する最良の方法は何でしょうか?
または、拡張子なしでファイル名を取得する他の方法はありますか?
このシナリオでは、3文字の拡張子を想定しておくのが無難です。
どのように解決するのですか?
バッチファイル名を取得するための一番簡単な方法は
%~n0
.
@echo %~n0
で呼び出されたサブルーチンで実行されない限り)、現在実行中のバッチファイルの名前(拡張子なし)を出力します。
call
). このようなパス名に対する「特別な」置換の完全なリストは、以下のようになります。
help for
ヘルプの一番最後にあります。
また、FOR 変数参照が強化されました。 以下のオプションが使用できるようになりました。 の構文があります。
%~I - expands %I removing any surrounding quotes (")
%~fI - expands %I to a fully qualified path name
%~dI - expands %I to a drive letter only
%~pI - expands %I to a path only
%~nI - expands %I to a file name only
%~xI - expands %I to a file extension only
%~sI - expanded path contains short names only
%~aI - expands %I to file attributes of file
%~tI - expands %I to date/time of file
%~zI - expands %I to size of file
%~$PATH:I - searches the directories listed in the PATH
environment variable and expands %I to the
fully qualified name of the first one found.
If the environment variable name is not
defined or the file is not found by the
search, then this modifier expands to the
empty string
修飾子を組み合わせることで 複合的な結果を得ることができます。
%~dpI - expands %I to a drive letter and path only
%~nxI - expands %I to a file name and extension only
%~fsI - expands %I to a full path name with short names only
しかし、ご質問に正確にお答えすると サブストリングは
:~start,length
という表記があります。
%var:~10,5%
は、環境変数の 10 の位置から 5 文字を取り出します。
%var%
.
NOTE 文字列のインデックスはゼロベースなので、最初の文字が0番、2番が1番といった具合です。
のような引数変数の部分文字列を取得するには
%0
,
%1
を使用して、通常の環境変数に代入する必要があります。
set
を最初に設定します。
:: Does not work:
@echo %1:~10,5
:: Assign argument to local variable first:
set var=%1
@echo %var:~10,5%
構文がさらに強力になります。
-
%var:~-7%
から最後の7文字を抽出します。%var%
-
%var:~0,-4%
は最後の4文字を除いたすべての文字を抽出し、ファイル拡張子も取り除きます(ピリオドの後の3文字が [.
]).
参照
help set
は、その構文の詳細について説明します。
関連
-
[解決済み] %~dp0とはどういう意味ですか、またどのように機能しますか?
-
[解決済み] %~dp0とはどういう意味ですか、またどのように機能しますか?
-
[解決済み] バッチファイルに引数を渡すにはどうしたらいいですか?
-
[解決済み] substrとsubstringの違いは何ですか?
-
[解決済み] Windowsのバッチファイルから長いコマンドを複数行に分割する
-
[解決済み] バッチファイルにおけるカレントディレクトリとは何ですか?
-
[解決済み] Windowsのコマンドラインで、現在の日付/時刻をファイル/フォルダー名で使用するために適切な形式で取得するにはどうすればよいですか?
-
[解決済み] Windowsのコマンドライン環境を使って、ファイル内のテキストを検索・置換するにはどうすればよいですか?
-
[解決済み】バッチファイル。部分文字列が(ファイル内ではなく)文字列内にあるかどうかを調べる
-
[解決済み] バッチリです。拡張子削除
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ロボコピーが無効なパラメータ#3
-
[解決済み] .BATファイルを完了後に自己削除する方法を教えてください。
-
[解決済み] cmdを使ったファイルの移動は? [終了しました]
-
[解決済み] バッチファイル内でif - else構造を使用するには?
-
[解決済み] バッチファイル/cmdで5秒間スリープさせる方法 [重複]について
-
[解決済み】not-equal(inequality)演算子の一括処理について
-
[解決済み】BATファイル実行後、CMDを開いたままにする。
-
[解決済み】バッチファイル内で管理者権限を要求する方法
-
[解決済み] Windowsのバッチファイルでは、どのようにループさせるのですか?
-
[解決済み] バッチファイルです。ディレクトリ内の全ファイル、フォルダを削除する