ユーザ用ツール

サイト用ツール


ja:windows:cmd-tips

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
ja:windows:cmd-tips [2014/05/16 03:53] – [末尾が数値の文字列をECHOでリダイレクトする] makotoja:windows:cmd-tips [2014/06/11 09:24] (現在) – [現在のYYYYMMDD形式の文字列を手軽に取得する] makoto
行 31: 行 31:
 ==== もっと手軽にSleep処理を行う ==== ==== もっと手軽にSleep処理を行う ====
 なんと**timeout**コマンドなる、そのものずばりなコマンドがあった。\\  なんと**timeout**コマンドなる、そのものずばりなコマンドがあった。\\ 
-書式は**"timeout /T 秒数 [/NOBREAK]"**\\ +書式は<code winbatch> 
 +timeout /T 秒数 [/NOBREAK] 
 +</code>
 画面表示もカウントダウンしてくれるので、非常に良い。\\  画面表示もカウントダウンしてくれるので、非常に良い。\\ 
 無言で待機させたい場合はNULLへリダイレクトすればよい。 無言で待機させたい場合はNULLへリダイレクトすればよい。
行 55: 行 57:
 テキストファイルをカンマ区切りで分割し、任意の列の文字列だけをECHOするとか。((**/F**オプションマジ便利!でも書くの面倒だから各々検索してくれ!頼む!(ぉぃ)) テキストファイルをカンマ区切りで分割し、任意の列の文字列だけをECHOするとか。((**/F**オプションマジ便利!でも書くの面倒だから各々検索してくれ!頼む!(ぉぃ))
 === 複数の空白文字を含む場合の取り扱い === === 複数の空白文字を含む場合の取り扱い ===
-  FOR /F "tokens=2 usebackq" %%A IN ( hogehoge.txt ) do echo %%A+  FOR /F "tokens=2" %%A IN ( hogehoge.txt ) do echo %%A
 上記のような処理で、hogehoge.txtを読み込んだ時、hogehoge.txtが下記のような状態だったとする。 上記のような処理で、hogehoge.txtを読み込んだ時、hogehoge.txtが下記のような状態だったとする。
  
行 66: 行 68:
 これを上のコマンドで処理すると、出力は以下の様になる。 これを上のコマンドで処理すると、出力は以下の様になる。
 <code winbatch> <code winbatch>
-FOR /F "tokens=2 usebackq" %%A IN ( hogehoge.txt ) do echo %%A+FOR /F "tokens=2" %%A IN ( hogehoge.txt ) do echo %%A
 BBB BBB
 EEE EEE
行 74: 行 76:
   * 連続する空白文字は1文字として扱われる。\\ (空白文字毎に別の部分文字列に分解されない)   * 連続する空白文字は1文字として扱われる。\\ (空白文字毎に別の部分文字列に分解されない)
   * 行頭の空白文字は無視される。\\ (行頭の空白文字の後に来る最初の部分文字列が1つ目の文字列として取り扱われる)   * 行頭の空白文字は無視される。\\ (行頭の空白文字の後に来る最初の部分文字列が1つ目の文字列として取り扱われる)
-===== 現在のYYYYMMDD形式の文字列を手軽に取得する ===== +
-以前某IT系サイトを見ていると、年月日をYYYYMMDD形式で取得する場合、 +
-<code winbatch> +
-set YYYYMMDD=%Date:~0,4%%Date:~5,2%%Date:~8,2% +
-echo %YYYYMMDD% +
-</code> +
-のようにして取得する。\\ というような事が書かれていて、正直「めんどくせぇなぁ…」と思っていたのだが、目の覚めるような代替案を発見。 +
-<code winbatch> +
-set YYYYMMDD=%DATE:/=% +
-echo %YYYYMMDD% +
-</code> +
-これでOK。DATEで出力される文字列から/を置換で除去してしまう、という方法。 +
-ちなみにTIMEでも**"%TIME::=%"**のようにすると**:**を除去した文字列にすることが可能だが、TIMEの場合は時分秒の後ろにミリ秒が付いたり、時の部分が0~9の感は一桁減るなど、別な部分で気をつける必要がある。 +
-ミリ秒が残って良いなら、こんな感じで午前中に発生する行頭の空白文字を除去(0に置換)できる。 +
-<code winbatch> +
-set dummy=%TIME::=% +
-set HHMMSS=%dummy: =0% +
-echo %HHMMSS% +
-</code>+
 ===== 任意のテキストファイルを一行ずつ読み込んで処理する ===== ===== 任意のテキストファイルを一行ずつ読み込んで処理する =====
 任意のテキストファイルを一行ずつ読み込んで処理した場合は次のようにする。 任意のテキストファイルを一行ずつ読み込んで処理した場合は次のようにする。
行 132: 行 116:
 **d** : ドライブレター+コロンのみ\\ **d** : ドライブレター+コロンのみ\\
 **p** : パスのみ(ドライブレター、ファイル名を除く)\\  **p** : パスのみ(ドライブレター、ファイル名を除く)\\ 
-**n** : 拡張子のみ+**n** : 拡張子を除いたファイル名のみ\\  
 +**x** : 拡張子のみ\\  
 +**t** : ファイルの更新日時\\  
 +**z** : ファイルのサイズ(Byte)\\  
ja/windows/cmd-tips.1400212417.txt.gz · 最終更新: 2014/05/16 03:53 by makoto