%0がバッチ自身で%1-nが引数なのは当然として、%~dp0とかの話。
修飾子 | 意味 |
---|---|
%~0 | ダブルクォートをとっぱらう |
%~d0 | ドライブ文字だけ |
%~p0 | ドライブ文字の後のパスだけ(ファイル名は含まない) |
%~f0 | フルパス |
%~n0 | ファイル名だけ(拡張子は含まない) |
%~x0 | 拡張子だけ |
%~a0 | ファイル属性だけ |
%~t0 | ファイル時刻だけ |
%~z0 | ファイルサイズだけ |
%~dp0 | [応用]ドライブ含むバッチのあるディレクトリ |
%~dpn0.ps1 | [応用]同パス同名だけど拡張子がps1 |
/pオプション。気を付けるべきはsetは変数と=の間に隙間あけちゃだめってとこ。
set /p hoge="Input:"
echo %hoge%
詳しい説明はどこかに任せる。
要はifとかforとかの括弧の中は1行として扱われるからその中で変化した変数を扱いたい時にこれを使う。
※なにが”遅延”なのかいまだに理解できていない。
ポイントは最初のおまじないとエクスクラメーションマークでくくることくらい。
最初のおまじないの言葉をよく忘れる。間にスペースがないから覚えにくいのだと思う。
「enable delayed expansion」
setlocal enabledelayedexpansion
if "%hoge%"=="" (
set result="karappo"
echo !result!
)
PowerShellさんまじですごい。
Start-Processに-Verbっていうのがあって色々ユーザ視点でできるけどその中に管理者として実行がある。それがrunas。あとは知ってることの組み合わせ。
@echo off
if not "%1%"=="admin" (
PowerShell -command "Start-Process -Verb runas -FilePath %~f0 -ArgumentList 'admin'"
) else (
echo Start Run As Administrator!
pause
)
上記例では自身を管理者権限で呼び出している。無理やり引数にフラグもたせたけどもっとスマートな方法があるかも。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント