CMD
久しぶりのバッチスクリプトネタ。 for /fでファイルを読むと、空行の無視その他いろいろ問題があるので、どんなテキストファイルでも読む方法。 @echo off setlocal enabledelayedexpansion set INFILE=XXXXXXXX set OUTFILE=YYYYYYYY for /f %%A in ('find…
環境変数PATHの内容を1項目1行で表示する。 その際に、C:\Program Filesで始まる物は表示しない。 単に改行するだけなら、文字列置換で簡単。改行に置換する際には、遅延環境変数にする事が必要。 C:\Program Filesの除外は、findstr /vで出来れば良いが、置…
コマンドプロンプトで、aaa\..\foo.txtと入力すると、カレントディレクトリにaaaというディレクトリがあれば、その親のfoo.txtなので結局カレントディレクトリのfoo.txtが拡張子に関連付いたプログラムが起動してファイルを開くのは当然だ。 しかし、aaaが存…
「CD コマンドの機能拡張 第二版」以来、16年ぶりの大幅修正。機能は変えていないが、リファクタリングで機能追加がシンプルになった。 cdd.batという名前で作って、doskey cd=cdd $*でaliasを定義して使う。 機能は、 移動はすべて pushd で行う。 cd のみ…
コマンドプロンプトの色は、背景を黒、文字を白にしているのだが、プログラムによっては他の色の文字が表示される。 白以外の文字を黒背景に出すと非常に読みにくいので、白固定にした。 まず、レジストリ。 Windows Registry Editor Version 5.00 [HKEY_CUR…
for %%A in (A B C D E) do call :sub goto :EOF :sub for %%B in (1 2 3 4 5) do echo %%A-%%B レキシカルには :sub は、for %%A のループの外だが、%%A が参照できる! 今まで、引数で渡してました。なんてことだ。 しかし、goto すると %%B だけでなく %%…
ちょっと信じがたいけど、少なくともWindows7では、forfilesコマンドにバグがある。テストしてないのか? /c で指定した外部コマンドの第一引数が落ちるようだ。cmd /c を書けば問題なし。 D:\foo>forfiles /c "gecho 1 2 3 @file" 2 3 bar 2 3 baz D:\foo>f…
バッチスクリプトから他のバッチスクリプトを呼び出すときに、callで呼び出さないと戻ってこない物だと思っていた。 <<foo.bat>> bar.bat echo foo ・・・・・実行されない <<bar.bat>> echo bar しかし、forだと実行される。 <<foo.bat>> for %%A in (a b c) do bar.bat&echo foo ・・</foo.bat></bar.bat></foo.bat>…
http://otnx.jp のサイトを、共用レンタルサーバーから、VPSに移行した。 本日、DNS の登録変更。 ようやくというか、移行しようと思ってから、2年半放っておいたのか。。。。。あとまだメーリングリストの移行がある。
今まで、for /f コマンドの eol= オプションについては無視してきた。これは、読み込んだ行の行頭の文字によって読み飛ばす機能だが、デフォルトの文字が「;」(セミコロン)である。なので、昔作ったhead.batやtail.batでは、空行だけでなく行頭がセミコロ…
find では長い行を扱えないようだ。 C:\>ruby -e "5.times{puts '@'*4094}" | find "@" | ruby -nle "puts $_.size" 4094 4094 4094 4094 4094 C:\>ruby -e "5.times{puts '@'*4095}" | find "@" | ruby -nle "puts $_.size" 20474 C:\> 改行を含んで4096ま…
/? の冒頭部分だけ載せる。 まず、CMDのビルトインコマンドで増えた物は、help の出力を比較して外部コマンドを除いてみると、1つだけ。 MKLINK シンボリック リンクを作成します。 MKLINK [[/D] | [/H] | [/J]] リンク ターゲット /D ディレクトリのシンボ…
知らなかった。 AT コマンドはシステムユーザで実行されるが、「タスク」の画面の詳細設定メニューで、AT実行時のユーザを指定できる!
ふとPATHEXEに.だけを追加するのを思いついてやってみたら意外なことにうまくいきました。 まず、システムのプロパティから、環境変数 PATHEXT の最後に ;. (セミコロンとピリオド)を追加します 次に、もしRubyがインストールされていなければインストール…
Firefoxの起動・終了を速くするために、sqliteデータを再作成・圧縮するというのが流行っている?ようなので、乗ってみる。サイズを小さくするためには一度削除して再作成させるといいのだが、そこはそれ、データが失われるなど難しい。 すっきりしたい場合…
%TIME%の先頭が、時刻が10時以前の時空白になるのは不便だと思っていたけど、そうなっている理由についさっき思い当たった。%TIME:~0,2% を取り出して、それだけを使って計算したり大小比較するときに先頭ゼロでない方が単純だ。今まで、YYYYmmddHHMMSS のよ…
C:\temp>jpegtopnm a.jpg | pnmtopng > a.png jpegtopnm: WRITING PPM FILE C:\temp>C:\gnu\bin\jpegtopnm a.jpg | C:\gnu\bin\pnmtopng > a.png C:\gnu\bin\pnmtopng: Unable to create temporary file. mkstemp() failed with errno 22 (Invalid argument)…
久々のバッチスクリプト。というか、ブログ自体が2ヶ月ぶりか。ビデオレコーダーは、東芝RD機を使っているが、これには「フォルダ解体」という機能がある。フォルダの中のファイルを外に出して、フォルダを空にしてからそのフォルダを削除する。これは、Wind…
http://otnx.jp/CMD/ のサイトに今月英語でのコメントが2件。いずれもお褒めの言葉をいただいた。 googleで翻訳して読んでいるようだけど、続いて2件来たと言うことはどこかにリンクされているのか?しかしgoogleのリンク検索では引っかからず。
NIFTYの掲示板より。また for /f のバグである。Win2000/SP4、WinXP/SP1,SP2で出る。2003は未確認。 コマンドプロンプトを開いて、このスクリプトを連続実行すると、不思議な現象が起こる。 @echo off for /f "usebackq tokens=1-4" %%A in ('aa bb cc dd') …
久しぶりに http://otnx.jp/CMD/ にアクセスしてみると、ページが表示されない。一覧は出るものの、どのページも空白である。もしや、クラッカーにやられたかとログを見てもそれらしき形跡は無いし、ファイルの中身も直接見るとちゃんとある。ふと、さくらイ…
ふと、WindowsXPで dir " " を打って見る。 C:\WINDOWS\TEMP>dir " " ファイル名または拡張子が長すぎます。 C:\WINDOWS\TEMP>type " " 指定されたパスが見つかりません。 C:\WINDOWS\TEMP>echo > " " 指定されたパスが見つかりません。少なくとも dir のは…
随分間が開いたがたまにはCMDネタも書かないと。C等でプログラムを書く時は、ファイルのパス区切り文字に \ だけでなく、/ も使えるわけだが、コマンドプロンプトからでは、/ はオプションの指定に使われているケースが多く、使えないことが多い。 しかし、…
知らないうちに「はてなりんぐ」というものが出来ていた。SNSのコミュニティー相当な気がするが、はてなダイアリー以外のblogも参加できる。とりあえず、「CMDEXE」というリングを作ってみた。このページにリングへのリンクモジュールをつけてみたが、表示が…
アクセス解析(はてなカウンター)を見ていると、検索や、はてなキーワードからが多いのですが、ブックマークから来ていると思われるアクセスもそこそこあります。そういう人って、テレビ話が読みたいわけじゃなくて、CMD.EXE Tips が読みたいんですよね。多分…
net use X: \\host\share /user:watashi himitsu copy X:\not-exist-file . net use X: /delete を実行すると、かなりの確率で net use /delete が失敗する。copy が成功するケースでは失敗は起こらない(全く起こらないのかどうかは不明)。また、copy の後に…
最近TVの話が続いたので、久々に CMD ねたでも書いてみる。最近あまりねたを思いつかない。だれかお題を。%RANDOM% で乱数が得られるわけだが、これのシード値はどうなっているのか。 試してみると、なんと 時分秒 を元に作っているようである。しかも、時刻…
少し前に、http://otnx.jp/CMD/%C1%B4%C8%CC%2F%B9%BD%CA%B8%B2%F2%C0%CF に構文解析のことをまとめて終わった気になっていたが、まだまだのようだ。 for /f "delims=" %%A in ("echo ABC&date/t") do %%A →ABC&date/t と表示 for /f "delims=" %%A in ("ech…
id:otn:20041216 で、「(echo)の空白付加の謎」を書いたが、echo を括弧で囲んだ上にパイプで使うケースがあるのかという問題。例えば、TCP.EXE を使ってメールのチェックをするケース。 TCP.EXEは、"Mule for Win32" のバイナリパッケージに入っている。バ…
id:otn:20041216 で、「(echo)の空白付加の謎」というのを書いたが、 set