%~dp0 とは、%0にオプション構文の『 ~ 』と『 d 』と『 p 』が付いたものです。 それぞれを説明すると、 %0 実行されているファイルのパスです。 ~ "(ダブルクオート)を除く d ドライブ文字だけに展開する p ファイル名を除くパスの部分に展開する つまり%~dp0 は、『実行されているファイルが置かれているカレントディレクトリ』を表します。 もう少し詳しく説明すると次のようになります。 %0、%1、%2 などは引数参照と呼ばれ、%1、%2 はバッチに渡される引数を順に表します。 %0は特殊なもので、起動されたバッチファイルのフルパスが格納されます。 %0で渡されるフルパスには、スペースなどが含まれていることがあるので、ダブルクオートの引用句で囲われています。 このため、%0は "C:\・・・\・・・\" となっているため、 %0Filename は "C:\・・・\・・・
「cd」ではなく「pushd」を使う コマンドプロンプトは古い設計で構築しているため、ネットワーク周りの機能が弱い。歴史をさかのぼれば、Microsoftがネットワークに積極的でなかった背景もあるが、とかく困るのが共有フォルダーへのアクセスだ。 コマンドプロンプトはUNCパスをサポートしていないためエラーになる UNCパス(いわゆる「¥¥マシン名¥共有名¥……」という記述方式)をサポートしていないコマンドプロンプトから共有フォルダへアクセスするのは、一見すると手詰まりに思えるが、Unix/Linuxユーザーであればおなじみの「pushd」コマンドを使って容易に解決できる。同コマンドで共有フォルダーにアクセスすると、自動的にネットワークドライブを割り当て、カレントディレクトリーとして利用可能になる。さらに割り当てたネットワークドライブは「popd」コマンドを使えば自動解除する仕組みだ。 「c
はじめに Windows バッチファイルには、値の集合を取り扱うためのデータ構造や文法規則はありませんが、シンボル名をうまく処理することで、配列やforeachに近い処理を行うことが出来ます。 要素番号をカウントカウントアップする方法 シンボル名に要素番号を付けて定義することで、疑似的な配列のように扱うことができます。 @echo off setlocal enabledelayedexpansion rem 要素番号をつけて変数を定義 set month_1=January set month_2=February set month_3=March rem foreachループ set i=1 :FOREACH_MONTH set it=!month_%i%! if defined it ( echo month_%i%=%it% set /a i+=1 goto :FOREACH_M
各ファイルに対して実行するコマンドを指定する @file:ファイル名(例:test.txt) @fname:拡張子なしのファイル名(例:test) @ext:ファイルの拡張子のみ(例:txt、exeなど) @path:ファイルのフルパス(例:C:\temp\test.txt) @relpath:ファイルの相対パス(例:.\test.txt) @isdir:ファイルの種類 (ディレクトリの場合は"TRUE"、ファイルの場合は"FALSE") @fsize:ファイルサイズ(バイト単位) @fdate:ファイルの最終更新日 @ftime:ファイルの最終更新時刻
当日日付の取得 前日日付の取得 翌日日付の取得 当月月初日の取得 当月月末日の取得 バッチファイルにて、日付を処理することはよくあると思う。 昔は、わざわざ日付計算用の関数をバッチで100ステップかけて作ったり、計算用のVBSを作ってみたり、いろいろ手間をかけてたと思う。 今は、PowerShell使えば1行で書ける。 以下は全てコマンドプロンプトで実行する際の記載なので、バッチファイルに記述する場合は、変数「%a」を「%%a」に直す必要があることを注意すること! 当日日付の取得 FOR /F “usebackq delims=” %a in (`powershell “(get-date).ToString(\”yyyy/MM/dd\”)”`) do Set TODAY=%a 【説明】 実行結果を変数に格納する、FOR文にて、“で囲んだコマンドを実行結果を取得する”usebackq”オプ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く