DOSbatch

バッチファイルでもっとも(?)簡単にYYYYMMDD形式を設定する方法

バッチファイルでログのファイル名に日付・時間をつける方法 で紹介したので一番短いのはこれ。 c:\>set YYYYMMDD=%Date:~0,4%%Date:~5,2%%Date:~8,2% c:\>echo %YYYYMMDD% 20110213 実際にログファイル名に使うときには、%YYYYMMDD%.logとかにすればいいけ…

【お題】環境変数からファイル名や拡張子を自由に取り出す方法

バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法 ふか 2011/02/02 13:21 これって引数ではない普通の環境変数ではできませんか? お題もらいました。 バッチファイル、コマンドプロンプトで環境変数を展開したいとな。 「%~修飾子…

シェルを指定できるタブ型コマンドプロンプトConsole + nyacusを試してみた

今、ckw + nyaousを使っている、5つぐらいckwを立ち上げるときもある。 そのときは、ckwもタブ型だったらなと思うことがある。 FirefoxもThunderbirdも秀丸など、だいぶ前からタブ型が主流で、それに慣れてしまったせいだろう。 Google RSSリーダーでよさそ…

バッチファイル/コマンドプロンプトで環境変数が設定されているかをチェックする方法

環境変数が設定されているかをチェックする方法 2パターンを紹介する。 IF文を使う 構文 IF DEFINED 変数 コマンド DEFINED 条件は EXISTS と同様に動作しますが、環境変数名を受け取って、環境 変数が定義されている場合は真を返します。 環境変数が設定さ…

バッチファイルでログのファイル名に日付・時間をつける方法

日付:YYYYMMDD(年月日)形式を設定その1 forコマンドを使う for /F "eol=;tokens=1,2,3,4*delims=/, " %i in ('date /t') DO SET YYYYMMDD=%i%j%k 実行結果 D:\workspace\batch_SandBox\>for /F "eol=;tokens=1,2,3,4*delims=/, " %i in ('date /t') DO SET …

「サービス」を起動するバッチファイル

Windowsでサービス状態一覧を表示するコマンドがないのはなぜだろうか? Windowsでサービス状態一覧を表示するコマンドがないのはなぜだろうか?(VBScript編) コマンドプロンプトで、サービスの一覧を表示、確認する方法を書いたが、 「サービス」の画面を開…

Windowsでサービス状態一覧を表示するコマンドがないのはなぜだろうか?

Windows Nのころから、Windowsのサービスを起動、停止すことはできた。 net コマンド 起動 net start "サービス名" 停止 net stop "サービス名" でも状態を確認するコマンドはなかった。 以下のコマンドがあってもいいのにないつも思ってた。 Windows XPから…

キミは、バッチファイル(*.bat)でREM以外でコメントアウトする方法を知ってるか?

Unix/Linuxのシェルは#の1文字でコメントアウトができるが バッチファイルは、REMコマンドを使う必要があって3文字も 打たなければならないので、メンドウ。 1文字でコメントアウトすることができないか試してみた。 DOSKEYで#をREMに割り当てる方法 バッチ…

これがあるからWindowsでckwを使うと言っても過言ではない便利なショートカットキー

ckwのCtrl関連のショートカットキーを簡単にまとめます。 他にも何かあったかもしれないけど、主に使っているのはこれだけです。 (Emacs使っている人は、Emacsのショートカットが結構使えるのよ、と覚えておけばおkです) 全部Ctrlキーとの組み合わせ全て…

バッチファイルでファイルパスからファイル名や拡張子を自由に取り出す方法

ファイルパスからファイル名や拡張子を自由に取り出す でシェルについて書かれていたのでそのバッチファイル版 説明 %~I - すべての引用句 (") を削除して、I を展開します。 %~fI - %I を完全修飾パス名に展開します。 %~dI - %I をドライブ文字だけに展開…

conってなに?

はてなのカテゴリーはなんでソートして表示してくれないのか?で秀丸から以下のプログラムの実行をした sort <con >con「con」ってなにかというと、Windows(MS-DOS時代)からの予約デバイスで コンソール、すなわち現在入出力を行っている画面・キーボードを表す。 </con>…

バッチファイルのエスケープ文字は^だ!!

バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたいで分割して書くために^のことを書いた。 エスケープ文字の用途は他にもある。例えば「|」パイプをエスケープしたい場合。 どういうときにパイプをエスケープしたいかというとFOR文でコマ…

バッチファイルで長い1行の処理を改行を入れて複数行に分けて書きたい

バッチファイルで1行の処理が長〜いと読みにくいので、複数の行に分けて書きたいこともある。 C言語におけるマクロでの「\」やVBの「_」と同じようなことをしたい。 バッチファイルで1行が長〜い処理というのもあまりないかもしないが、Javaでオプションやら…

こんな方法があったのか! Windows用GNUコマンド群 「GNU utilities for Win32」

MOONGIFTでWindows用のGNUのコマンド群が紹介されていた。 シンプルなWindows用Linuxコマンド集「Gow」 No Command, No Life. でも僕はCygwinは好きではない。 Gowは知らなかったので、僕が使ってるのは、GNU utilities for Win32というもの。 zip形式での配…

5.関数/サブルーチン (4)コマンド、バッチの復帰値 〜コマンドが正常終了したか確認したい〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

コマンド、バッチファイルの復帰値を確認したい %ERRORLEVEL%を参照する 正常の場合は0 異常の場合は1〜255 ただし、コマンドによっては常に0を返すものもある。 正常の例 D:\MyDoc\work\#blog\test>dir ドライブ D のボリューム ラベルは データ です ボリ…

バッチファイルのパラメータ

%0はバッチファイルのファイル名となる。 C言語と同じ。Javaをやってる人は違和感があるかも。 arg1.bat @echo off echo %0 D:\MyDoc\work\#blog\コマンドプロンプト>arg1.bat arg1.bat バッチファイルで使用できるパラーメータは%0〜%9まで arg2.bat @echo …

5.関数/サブルーチン (1)バッチファイルの呼び出し 〜体育館の裏に呼び出されました。。。〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

goto文ばかり使っていると訳分からなくなるので、バッチファイルを分割する。 その場合、バッチからバッチファイルを呼び出すときにはcall文を使用する。 呼び出すバッチファイルと呼び出されるバッチファイルが同じディレクトリにある場合は、ファイル名だ…

4.基本文法 (4)forでループ処理 〜回って回って回るぅ〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

if文とgoto文を使わず、for文を使うことができる c:\>for /L %i in (0,1,9) do @echo %i 0 1 2 3 4 5 6 7 8 9 バッチファイルを作成するときは、%iではなく%%iにする必要がある。 for /L %%i in (0,1,9) do @echo %%i 関連あるかもしれない記事 conってなに…

4.基本文法 (3)ループ処理〜もう一度最初から始めるんです。 もう一度。 もう一度。〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

指定回数分繰り返す、こういうことが1番コンピュータにやって欲しいことだろう。 サクッとバッチファイルを作成したいものだ。 if文とgoto文を組み合わせて使う。 悪名高きgoto文、指定したラベルに移動するもの。 goto文を乱用するとあっちゃこっちゃに移動…

4.基本文法 (2)if文の注意事項 〜\Microsoft の使い方が誤っています。〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

通常は以下の書き方が多いと思う。 IF "%ARG1%"=="%ARG2%"しかしこの場合値に 「"」が含まれるとエラーになってしまう。例えば、バッチのパラメータに空白を含むディレクトリを 指定するために、「"」「"」(ダブルクォート)でくくった場合など。 なので以下…

4.基本文法 (1)if文、else文 〜もしもー、それ以外ならばー〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

if文とelse文 else文ももちろん使える。 しばらく使えないと思い込んでた。 ifのヘルプにきっちり書いてあるんだよね。。。以下の環境変数を設定してることを前提。 set ARG1=A set ARG2=A 正しい使い方1 if-else-normal1.bat IF {%ARG1%}=={%ARG2%} ( echo …

3.環境変数 (6)x64とx86の環境変数の違い 〜x64はx86とは違うんです。x86とは〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

x64とx86の環境変数の違い。 Windows Server2003 x64版で確認 デフォルトではなく、Visual Studio2005、Officeなど諸々が インストールされている環境 確認結果 64bitのコマンドプロンプト C:\>set |findstr "x86 64 32" ComSpec=C:\WINDOWS\system32\cmd.ex…

3.環境変数 (5)起動時に有効になる環境変数 〜人生と環境変数は、順番が大事〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

Windows XP以降だと環境変数は、以下で設定できる。 システム環境変数 ユーザ環境変数 autoexec.bat コマンドプロンプト上でsetコマンド setコマンドについては説明済み、 autoexec.batは、推奨しないので説明は省略。 システム環境変数とユーザ環境変数の違…

3.環境変数 (4)環境変数一覧 〜全部見せます〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

環境変数の一覧を表示する (Unixだとenvコマンド) Windows XPで設定されているデフォルト環境変数一覧 C:\>set ALLUSERSPROFILE=C:\Documents and Settings\All Users APPDATA=C:\Documents and Settings\Administrator\Application Data CommonProgramFiles…

3.環境変数 (3)ローカル環境変数を使用する 〜ここだけの話〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

環境変数は、設定したコマンドプロンプトに対して有効になる。でも、バッチファイルで設定した環境変数がそのまま コマンドプロンプトに残っているとなにかと都合が悪い。 PATHなどはバッチファイルごとに指定した場合もある。 そのために使うのがsetlocalコ…

3.環境変数 (2)環境変数の計算 〜コマンドプロンプトで計算するか普通?〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

コマンドプロンプトでは変数はなく、全て環境変数になる。 これだと計算ができないように思えるが、コマンドプロンプトでも ちゃんと計算ができる。 (でも、普段使場面はループ処理でのインクリメントぐらいだろ。) SET /A 式 計算 /Aをつけないと文字列に…

3.環境変数 (1)環境変数の使い方 〜意外に削除の仕方はしらない人が多い〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

環境変数を設定、表示、削除したい。コマンドプロンプトでは、変数と環境変数の区別はない。 あるのは環境変数だけ。 これがUnnixと異なる。 環境変数の設定 c:\>set XYZ=hoge 環境変数の表示 SETコマンドで表示 大文字小文字の区別はない。 c:\>set XYZ XYZ…

2.実行する (3)バッチファイルで文字列出力 〜バッチファイルでHello World〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

echo Hello Worldと実行したコマンドまで表示されてしまう。 結果だけ表示したい。 オリジナル D:\MyDoc\work\#blog\コマンドプロンプト>HelloWorld.bat D:\MyDoc\work\#blog\コマンドプロンプト>echo Hello World Hello World 方法1 コマンドに@をつける @e…

2.実行する (2)バッチファイル 〜バッチファイルでHello World〜【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

標準出力にHello Worldを出力する処理をバッチファイルにする。 テキストエディタでファイルを作成する バッチファイルの拡張子は「.bat」か「.cmd」 今回は以下の2つを作成する HelloWorld.bat Hello World.bat バッチファイルの内容 echo Hello World 実行…

2.実行する (1)文字列を出力する〜コマンドプロンプトでHello World〜 【コマンドプロンプト、バッチファイルを使わなきゃならなくなった人向けのメモ】

プログラムの入門と言えば、お約束は Hello World 文字列の出力ということで、コマンドプロンプトでも標準出力に 出力してみる C:\>echo Hello World Hello World 空白を含む文字でも""でくくる必要はない くくるとそのままくくった文字列が表示される C:\>e…