自動更新

並べ替え:新着順

ベストポスト
メニューを開く

#コマンドプロンプト・BATを使いこなす 109 バッチファイルでは, 複雑な処理は困難だ。 解決策として, 別のプログラムを呼び出して処理させるべし。 ・cscriptでWSF・WSH ・mshtaでワンライナー なぜなら,BATが得意分野とするのは 「外部プログラムを適切に呼びだす」 という処理だから。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 108 バッチファイルの使いどころ… 「プロセスの起動処理」を簡素化できる。 単にプログラムを起動するだけなら わざわざBATを作る必要はない。 BAT化して "便利!" と恩恵を享受できるのは, 【起動引数のセットをまとめて保管しておける】 点にある。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 107 全ファイルを再帰的にサイズ順に出力: 下記をa.batで保存し a.bat | sort @echo off SETLOCAL enabledelayedexpansion for /F "usebackq delims=FUGA" %%i in (`dir /s /a-d ^| findstr "^[0-9]"`) do ( set hoge=%%i echo !hoge:~18! ) ENDLOCAL

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 106 フォルダ内を再帰的に辿り 全ファイル名を加工したい場合… ・batファイル内で遅延展開し, ・dirコマンドの出力結果を  forコマンドで受け取りつつ, ・ループ変数 %%i を  別変数に格納して, ・その環境変数を文字列加工すればよい。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 105 dirコマンドに /b オプションを付けないまま, その出力結果を forコマンドのusebackqでスキャンしたい場合… forでのスキャン時に空白で区切らせず, delims=HOGE のように 存在しない文字列を指定すれば 環境変数 %i に行全体が格納される。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 104 下記をa.batに保存し実行。 フォルダ内を再帰的に辿り更新日時を出力。 SETLOCAL enabledelayedexpansion for /F "usebackq delims=HOGE" %%i in (`dir /o-s /s /a-d ^| findstr "^[0-9]"`) do @( @set hoge=%%i & @echo !hoge:~0,10! ) ENDLOCAL

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 103 SETLOCALコマンドによる遅延展開は, バッチファイルの内部では有効に動作するが コマンドライン上では使えないので注意! learn.microsoft.com/ja-jp/previous… Remarks: When you use setlocal outside of a script or batch file, it has no effect.

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 102 BATで「数値の0埋め」を実装してみる language-and-engineering.hatenablog.jp/entry/20131116… 遅延展開された環境変数は % ではなく ! で囲む。 %%i はforコマンドの引数だとする。 set hoge=%%i rem 10より小さければ0埋めして変数格納 if %%i LSS 10 ( set hoge=0!hoge! )

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 101 バッチファイル内で 環境変数の「遅延展開」を 避けて通れない場合もある。 どんな場合かというと 「繰り返し動的に変数の値が書き換わる」 ようなケース。 例えば forコマンドによる繰り返しループ中で 変数を毎回変更し,連番を生成する等。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 100 「重複しないファイル名を探索して保存」という処理 language-and-engineering.hatenablog.jp/entry/20111030… BATだけで実現できます ・if existで既存ファイルを探知。 ・存在すれば,重複回避のため gotoでファイル名をつけ直す。 ・goto先では算術演算によりカウンター増加。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 99 バッチファイルで計算処理: set コマンドの /a オプションを使えば コマンドプロンプトでも算術演算が可能! ※ただし整数限定 rem 変数に1をセット set CNT=1 echo %CNT% →1 rem 算術演算で1を足す set /A CNT=%CNT%+1 echo %CNT% →2

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 98 BATで変数の「遅延展開」 language-and-engineering.hatenablog.jp/entry/20131116… けっこう面倒。 書き方: rem forループ内の環境変数を遅延展開する SETLOCAL enabledelayedexpansion ~forループ~ ENDLOCAL

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 97 バッチファイルは 1行ずつ・1コマンドずつ 読み込み&実行される? ↓ そうではない場合もある 遅延展開 endohizumi.hatenablog.com/entry/2019/08/… 引用 『一番ハマりやすいのが IFやFORの中で変数を使う時. FOR文は実行時に1行になる. 実行前に変数を展開する.』

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 96 重要なシステムファイルを編集: powershell -NoProfile -ExecutionPolicy unrestricted -Command "start notepad C:¥Windows¥System32¥drivers¥etc¥hosts -verb runas" 権限確認のダイアログ後,メモ帳でhostsが開き 編集・上書き保存可能.

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 95 重要なファイルはデフォルトで編集不可 notepad C:¥Windows¥System32¥drivers¥etc¥hosts で メモ帳から編集→上書き保存しても 「この場所に保存するアクセス許可がありません。 管理者に連絡してアクセス許可を取得してください」 となる

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 94 テキストファイルを 編集用にGUIで開くコマンド: notepad ファイル名 ↑ メモ帳で開く. 編集後に上書き保存. ※ただし重要なシステムファイルは 権限不足で上書き保存に失敗する. 例: notepad C:¥Windows¥System32¥drivers¥etc¥hosts

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 93 BATで「中間ファイル」を作るタイミング: 必要に迫られ,仕方なく 中間ファイルを作る場合もある。 それがBATの限界なので,甘受しよう…。 不必要な一時ファイルは作らないのが望ましいが BATの都合で避けられない場合 サッと作ってサッと消そう。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 92 BATの sort コマンド: コマンドプロンプトのsortコマンドは, 常にアルファベットの大文字・小文字を区別しない。 dir /B | sort a1.c A2.c a3.c A4.c

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 91 ファイルの中味を逆ソートして保存し直す: 中間ファイルを活用。  type hoge.txt | sort /r > temp.txt  type temp.txt > hoge.txt  del temp.txt type:ファイルの中身を表示。 sort:行ごとにソート。 sort /r:行ごとに逆ソート。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 90 直前のコマンドで読み込んだファイルと 同一ファイル内にリダイレクト はできない。 type a.txt | sort > a.txt 不可能. type a.txt | sort > b.txt これはOK。 パイプで行ソートした結果を 別ファイルにリダイレクト. language-and-engineering.hatenablog.jp/entry/20101202…

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 89 バッチでログ出力: Linuxのシェル(Bash)と異なる点として, BATには「teeコマンドが無い」。 つまり,  「処理結果を  リアルタイムに画面出力しながら,  同時にログファイルにも書きこむ」 という要件は, Windowsバッチでは実現不可。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 88 バッチファイルでログ書き込み: ・ふつうのリダイレクトは, 標準出力(「1」)に書き込まれる。 ・エラーメッセージは, エラー出力(「2」)に出てくる。  call sub.bat > log.txt 2>&1 language-and-engineering.hatenablog.jp/entry/20130502…

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 87 あるコマンドの実行結果を 別のコマンドやファイルに渡す… ▶パイプ "|" コマンドの出力を丸ごと別コマンドに渡す ▶forコマンド コマンドの出力を1行ずつ別コマンドに渡す ▶リダイレクト ">" コマンドの出力を丸ごとファイルに出力

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 86 音を鳴らすコマンド for /f "delims=0" %a in ('cmd /u /c echo 〇') do @echo %a cmd /u は結果をUnicodeで返す 〇 のUTF-8でのビット列の並びは U+3007 0 のSJISのビット列は 30 delims=0 は3007を30で区切り ビープ音の制御文字0x07が残る!

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 85 コマンドプロンプト上で 「echo」と半角スペース1つを入力してから CTRL+G を同時押しすると echo ^G と表示される。 ここでエンターを押すと… ビープ音が鳴る。 ^Gは制御文字。 ベルコード(bell code) ja.wikipedia.org/wiki/%E3%83%99… ・16進数で0x07

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 84 「コマンドの実行結果をforで変数に格納」 を駆使すると… neos21.net/blog/2017/02/1… 下記をコマンドプロンプトに貼り付けるか batで実行してみよう。 for /f "delims=0" %a in ('cmd /u /c echo 〇') do @echo %a ビープ音を鳴らせる!

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 83 dirでフォルダ一覧を取得し forで一つずつ処理する際, フォルダ名にSJISで処理不能な文字を含むと, そのフォルダが「存在しない」とみなされる。 @for /F "usebackq delims=," %i in (`dir /ad /b`) do @( if not exist "%i" echo "%i")

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 82 forはデフォルトで行内を空白で区切り 最初のトークンを%iに保管。 for /F "usebackq delims=," %i in (`dir /b`) do ( echo "%i" ) ↑ 区切り文字を,に変えれば 行内がスペースで分割されない。 空白を含むファイルパス全体が そのまま%iに格納。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 81 forコマンドの本来の役割は 「各行内を空白で区切り, 分割結果を変数内に格納する」こと。 for /F "usebackq" %i in (`dir /ad /b`) do ( echo "%i" ) ↑ フォルダ名に半角スペースが含まれる場合, スペースの左側だけが%iに入りechoされる。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 80 あるフォルダツリー内の全ファイルについて html ファイル以外を 確認つきで削除する: for /F "usebackq" %%i in (`dir /s /b /a-D ^| findstr /V ".*¥.html$" `) do ( del /P %%i ) in (`~`) の中にパイプ「|」を書く場合 ^でエスケープが必要。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 79 現在見ているフォルダ上に存在する 全てのフォルダを,1階層目のみ となりのフォルダ内に空で複製する for /F "usebackq" %V in (`dir /aD /b`) do mkdir "..¥hoge¥%V" dir /aD ディレクトリ属性を持つもの dir /b フルパスではなくフォルダ名のみ

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 78 cdコマンドの実行結果を 環境変数に保管: for /F "usebackq" %%i in (`cd`) do ( set BAT_DIR="%%i" ) echo %BAT_DIR% ↑ 「コマンドの実行結果を 動的に変数に格納」 という用途で,forコマンドが役立つ。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 77 for /F "usebackq" %i in (`dir /A-D /s /b *.*`) do ( echo %i ) ・dir /A-D 属性(attribute)として,ディレクトリを除外。 ・dir /s /b *.* フォルダツリーを再帰的に検索。 ・usebackq オプションで, in の中身にコマンド出力を利用可。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 76 バッチで「高度なfor文」: 別コマンドの実行結果を,in (`~`) で 1行ずつ文字列として forコマンドの引数に渡せる。  for /F "usebackq" %i in (`dir /s /b *.txt`) do ( echo %i ) カレント以下の全フォルダを 再帰的にファイル検索している。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 75 コマンドの実行結果を 別のコマンドに渡すには ▶パイプ記号「|」では渡せない時がある。 dir /A-D /B | echo →ECHO は <ON> です。と出るだけ。 ▶forコマンドを使えばパイプ可能! for /F "usebackq" %i in (`dir /A-D /B`) do ( echo %i )

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 74 パイプ「|」と「for」 どっちが便利? ▶初級のうちはパイプを使う。 ▶中級のBATコーディングにおいては, パイプよりも for コマンドのほうが重宝する。 高度なスキャン, コマンド実行結果の変数格納など色々できる。 for 文を使いこなそう!

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 73 ・コマンドの実行結果を 丸ごと別のコマンドに渡す: →パイプ「|」を使う。 ・コマンドの実行結果を 別のコマンドに渡し,1行ずつ自由に処理する: →for文が非常に便利。 ・コマンドの実行結果を 動的に「変数に格納」する: →同じくforが便利。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 72 前のコマンドの実行結果を, 次のコマンドへ パイプ記号「|」で渡せる場合: 例 dir /ad /b | findstr /V "^_" カレントフォルダ直下の全ディレクトリのうち, ディレクトリ名の先頭が "_" のものを除外(/V)し 全てリストアップ。

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 71 バッチでコマンド間の連携: 「あるコマンドの実行結果を,別のコマンドに渡す」 普通は「|」(パイプ)を使う。 例えば ipconfig | more language-and-engineering.hatenablog.jp/entry/20130502…

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

メニューを開く

#コマンドプロンプト・BATを使いこなす 70 ・set コマンドで設定した変数は 「そのコマンドプロンプトの  ウィンドウを開いている間のみ」有効。 →ウィンドウを閉じると変数が元に戻ってしまう。 ・PATH というコマンドで 環境変数 path を設定しても 上記と同じ。 language-and-engineering.hatenablog.jp/entry/20081028…

ITエンジニア見習いたん (プログラミング・コーディング、情報システム開発などの学術たん)@i_t_tan

トレンド21:30更新

  1. 1

    スポーツ

    ダブルスチール

    • ヘッドスライディング
    • スクイズ
    • セーフティスクイズ
    • GIANTS
    • プロ野球
    • 勝ち越し
    • DeNA
    • セーフティ
  2. 2

    エンタメ

    閉め忘れ

  3. 3

    アニメ・ゲーム

    マルチャミー

    • Sat
    • HP
  4. 4

    グルメ

    レプリカントの葬列

    • 西早稲田
    • コラボカフェ
    • 鰯と柊
    • HP
  5. 5

    エンタメ

    風呂キャンセル

    • 風呂キャンセル界隈
  6. 6

    ニュース

    フィッシャーズ

    • ドズル社
  7. 7

    スポーツ

    ヘッスラ

    • スクイズ
    • 坂本勇人
    • バルドナード
    • 6回1失点
    • ケラー
    • 2勝3敗
    • 勇人
    • 坂本
    • 東京ドーム
    • 船迫
    • 増田
    • 1安打
    • CSファイナル
  8. 8

    スポーツ

    泥だらけの

    • ヘッドスライディング
    • スクイズ
    • プロ野球
    • DeNA
    • この試合
    • 泥だらけ
  9. 9

    アニメ・ゲーム

    正体不明の部屋

    • 大型特番
    • 正体不明の
    • 新スタジオ
    • 約50
    • 正体不明
  10. 10

    虹7th_day1

20位まで見る

人気ポスト

よく使う路線を登録すると遅延情報をお知らせ Yahoo!リアルタイム検索アプリ
Yahoo!リアルタイム検索アプリ