SQLの窓

2014年09月27日


コマンドプロンプト : テキストファイルの初期化と FOR でファイル列挙の方法

FOR : カレントのファイル列挙
FOR /D : カレントのディレクトリ列挙
FOR /F : テキストファイル内を列挙
FOR /R : 全てのファイル( サブディレクトリ内全て )列挙

実行内容

(3〜5)
オプションなしの FOR コマンドで、カレントファイルの一覧を *.* のワイルドカードで列挙しています

(8〜9)
> による リダイレクトの左辺に type nul という nul を表示するという結果を置いて、初期化しています。

(12〜14)
/D オプションで、カレントのディレクトリの一覧を列挙し、dir.txt に >> で追加書き込みをしています。( 本来実行するたびに追加されますが、実行前に初期化しています )

(17〜19)
/F オプションで列挙の対象をファイルにし、DO でファイル名を指定しています

(22〜24)
/R オプションで下位階層の全てのフォルダ内のファイル一覧を列挙して、all.txt に書き込んでいます。
@echo off
echo ファイル一覧
FOR %%i IN (*.*) DO (
	echo %%i
)

REM ファイル初期化
type nul > dir.txt
type nul > all.txt

echo 1階層 ディレクトリ一覧作成
FOR /D %%i IN (*.*) DO (
	echo %%i >> dir.txt
)

echo dir.txt 内列挙
FOR /F %%i IN (dir.txt) DO (
	echo %%i
)

echo 全階層 ファイル一覧
FOR /R %%i IN (*.*) DO (
	echo %%i >> all.txt
)



関連する記事


posted by lightbox at 2014-09-27 13:54 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2014年07月19日


コマンドプロンプト文字列の制限 / 8191文字

8191文字まで OK です。

コマンド プロンプト (Cmd.exe) へ 8192 文字以上の引数を渡した場合に発生する現象

ご大層なことを言ってるタイトルですが、中を読むまでも無く『情報が切れる』と言ってます。WindowsXP が終了したので、このドキュメントが一番正当なものとなりました。( Windows Vista 以降の コマンド プロンプト )

現実にこの制限にひっかかりやすいのは、「送る」にショートカットを入れて、たくさんのファイルを選択して実行しようとした時に、一つ一つのファイルがフルパスで渡されるので、比較的簡単に制限にひっかかります。
そういう場合は、ディレクトリで処理するか、目的のプログラム側を起動して、そこから一括処理できる方法があるかどうかチェックします。

また、アプリケーションによっては、パラメータファイルによって引数の情報を渡せる可能性もあります。
※ いずれにしても、一括で無理なら分割にすればいいと思います。
posted by lightbox at 2014-07-19 18:09 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2013年11月21日


コマンドプロンプトから、全ての階層の特定の種類(例えば *.docx)のファイルを別のフォルダへコピーする



▲ こんな感じでフォルダがあって、中には .docx のワードのファイルがある事が解っています。最大3階層なので、一つ一つは面倒です。エクスプローラを使うのならば、検索した結果を選択してコピーして貼り付ければ良いですが、何度も行う作業であれば一発で実行したいですし、コピー先がいろいろあったとすると、コマンド化しておくのが得策です。
FOR /R %i IN (*.docx) DO (copy "%i" C:\user\work\001)
C:\user\work\001 は、コピー先のフォルダです。"%i" のダブルクォーテーションは、ファイルのパスに空白が含まれている場合があるので囲う必要があります。バッチファイルで書く場合は、% は %% に書き換える必要があります。

関連する記事

コマンドプロンプトで、任意のファイルを下位ディレクトリ全てにコピーする( そして全て削除する )



posted by lightbox at 2013-11-21 14:43 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2013年11月20日


コマンドプロンプトで、任意のファイルを下位ディレクトリ全てにコピーする( そして全て削除する )

まず、一階層コピーからです。カレントディレクトリに複数のディレクトリがあって、全てに一つのファイルをコピーしたい場合です。( バッチファイルではありません。バッチファイルでは、%i を %%i と書き換えます )

▼ コピーしたいファイルが 001.txt の例
FOR /D %i IN (*.*) DO (copy 001.txt "%i")

以下はそれを全て削除する例です
FOR /D %i IN (*.*) DO (del "%i\001.txt")

次は、全階層コピーです。全てに一つのファイルをコピーしたい場合です。
FOR /R %i IN (.) DO (copy 001.txt "%i")


全階層の 001.txt を削除します
FOR /R %i IN (.) DO (del "%i\001.txt")


posted by lightbox at 2013-11-20 20:13 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2013年11月17日


全てのファイル・ディレクトリを表示する dir /a

以下はとにかく全て
dir /a
以下はディレクトリを全て
dir /ad
以下はファイルを全て
dir /a-d
いずれにしても、隠しファイル等は全て表示されます。パスの通っているディレクトリに dirall.bat というパッチファイル作って、保存しておくという方法もあります。

dirall.bat
dir /A %1 %2 %3 %4 %5 %6 %7 %8 %9
関連する記事

Windows7 : clip.exe ( Windows クリップボードにコマンドラインからのコマンドの出力をリダイレクトします )


posted by lightbox at 2013-11-17 00:55 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2012年12月12日


Nドライブに 7zip コマンドラインバージョン使ってフォルダを一括バックアップ

Windows サーバーから Nドライブを接続しておいて、日次パッチでバックアップしようとテストしました。

最初は 7za.exe で直接 Nドライブを使ってみたのですが、アクセス部分で特殊な事をしているようで、バッチファイルのコマンド文字列が吹き飛ぶという現象が出たので、いったんローカルに圧縮してからコピーするという、本来の一番無難な形をとりました。

sleep.vbs は、WSH で5秒だけスリープしています。

圧縮する前に削除しているので、-uq0r2x1y2z1w1 の意味がありませんが、削除しなければ新しい .zip へどういうルールでファイルを転送するかという記述です。(アルファベットが条件で、数字が処理です。)

q0 は、元に無いファイルが .zip 内より削除されます( 処理としては転送されない )
r2 は、.zip に存在しないファイルは圧縮して転送されます。
x1 は、.zip のほうが新しい場合で、そのまま転送されます。
y2 は、.zip のほうが古い場合で、ファイルは圧縮して転送されます。
z1 は、どちらも同じ場合で( サイズも日付も同じ )、そのまま転送されます。
w1 は、日付は同じだけれど、サイズが違う場合で、この指定では .zip 内が優先されます。

※ この処理ではファイルを一旦削除しているので、w2 になります

-x!.jpg -x!.db -x!*.png は、除外ファイルの指定ですが、これを有効にするには対象ファイルもワイルドカード指定する必要があるようで、その為 -r を指定して再帰処理を強制しています。
del c:\backup\web_admin.zip

cscript C:\backup\sleep.vbs

C:\backup\7za.exe a -tzip c:\backup\web_admin.zip c:\webhost\admin\ -wc:\tmp -uq0r2x1y2z1w1

cscript C:\backup\sleep.vbs

del c:\backup\web_misc.zip

cscript C:\backup\sleep.vbs

C:\backup\7za.exe a -tzip -r c:\backup\web_misc.zip c:\webhost\misc\*.* -wc:\tmp -uq0r2x1y2z1w1 -x!*.jpg -x!*.db -x!*.png

cscript C:\backup\sleep.vbs

copy c:\backup\web_admin.zip n:\backup\web_admin.zip

cscript C:\backup\sleep.vbs

copy c:\backup\web_misc.zip n:\backup\web_misc.zip
Nドライブに PC から接続するにはクライアントソフトが必要ですが、必要な時だけ使いたい場合はサービスを止めておいたほうが良いと思います。





posted by lightbox at 2012-12-12 17:02 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2011年03月18日


XP用、エクスプローラを右クリックしてそのフォルダで「コマンドプロント」を開くメニューを追加する .reg ファイル

Windows7 では、内部の記述は同様ですが、最初からSHIFT キーを押しながらポップアップメニューを表示すると、「コマンドウインドウをここで開く」というメニューが表示されます

▼ Windows7 での普通の右クリック


▼ Windows7 で、SHIFTキーを押しながらの右クリック




▼ Windows7 のオリジナル内容
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cmd]
@="@shell32.dll,-8506"
"Extended"=""
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /s /k pushd \"%V\""

※ 以下を Unicode で CRLF で保存しても使用できます。
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\shell\cmd]
@="コマンドプロンプト(&P)"

[HKEY_CLASSES_ROOT\Directory\shell\cmd\command]
@="cmd.exe /k \"cd %L\""





posted by lightbox at 2011-03-18 15:51 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2010年07月27日


コマンドプロンプトの省略ディレクトリ変更

例えば、C:\Documents and Settings\lightbox へ移動したい場合、他に
一致するディレクトリがなければ、以下のタイプで移動可能です。

cd \doc*\l*


posted by lightbox at 2010-07-27 12:24 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年11月15日


コマンドプロンプトで UTF-8 表示させる時に少しだけサポートするアプリケーション

プロパティでフォントをMS ゴシックに変更してから、
mode con:cols=140
chcp 65001
と実行すると、UTF-8 の日本語が一応正しく表示されますが、このモードは
バグがあって、日本語表示部分が欠落したりズレたりします。
その場合、コマンドプロンプトのウインドウのサイズを変更すると、
改善されるので、その処理をキーボードで行う為のものです

mode コマンドは必要ありませんが、改行するような長い出力は改善
されないので、できる限り横幅を取るためです

ブラウザでダウンロード
int APIENTRY _tWinMain(
	HINSTANCE hInstance,
	HINSTANCE hPrevInstance,
	LPTSTR lpCmdLine,
	int nCmdShow
)
{

	HWND hWnd = GetForegroundWindow();
	if ( IsZoomed( hWnd ) ) {
		ShowWindow(	hWnd, SW_RESTORE );
	}

	RECT rMe;

	GetWindowRect( hWnd, &rMe );

	SetWindowPos(
		hWnd,
		NULL,
		0,
		0,
		rMe.right-rMe.left-100,
		rMe.bottom-rMe.top,
		SWP_NOMOVE |
		SWP_NOZORDER 
	);

	SetWindowPos(
		hWnd,
		NULL,
		0,
		0,
		rMe.right-rMe.left,
		rMe.bottom-rMe.top,
		SWP_NOMOVE |
		SWP_NOZORDER 
	);

	return 0;

}




posted by lightbox at 2009-11-15 18:09 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年08月19日


2>&1 : 直前の出力にエラー出力をリダイレクト

この説明でいいのかどうか解からないですが、
そもそもこの「リダイレクト」というものは、非常には理解しづらくなってます。

Windows の ヘルプとサポートセンターから

「コマンドプロンプト」で検索して、

コマンド リダイレクト演算子を使用する

を参照して下さい。

Redirect

そこに以下のような例があります。
dir の出力を file.txt に送り、エラーの出力を file.txt に送るには、次のように入力します。

dir>c:\file.txt 2>&1

例えば、存在しないドライブに対して普通に file.txt にリダイレクト
しても、file.txt には何も書きこまれません。
dir x: > file.txt
指定されたパスが見つかりません。

しかし、以下のようにすると書き込まれます
dir x: > file.txt 2>&1


posted by lightbox at 2009-08-19 23:07 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年07月15日


windowsディレクトリに入れるコマンドプロンプト支援


ブラウザでダウンロード
コマンドプロンプトから、コマンドプロンプトを呼び出すと、
見た目は変わりませんが、F7 で呼び出す履歴は呼び出すネスト
毎に保存されるので、少しでいいからそれが解るようにしようと思いました。

Cmdhelp4

まず、一番上の親を間違って終わらせてしまわないように、
専用の終了バッチとして 「q.bat」を作り、一番上位では
終了できないようにしました( もちろん exit では終わります )
echo off
if %newcmd% == y (exit) else echo 終了できません / 終了は exit を入力して下さい

Cmdhelp3

また、コマンドラインを起動時に大きく使いたいので、
c.bat と c.vbs を作成し、「c.bat」でコマンドラインを使うようにしています。
Cmdhelp1
デフォルトのプロンプトは、ディレクトリ表示が邪魔なので短く
していますが、pr.bat と p.bat を作成して切り替えれるようにしています
Cmdhelp2
新しいコマンドラインの呼び出しは、new.bat です。
q.bat の連携と、コマンドラインに時間を表示しています。
Cmdhelp4
echo off
cmd.exe /k "set newcmd=y & prompt new $T$G"



posted by lightbox at 2009-07-15 14:48 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年07月12日


コマンドプロンプト作業の基本

起動
ファイル名を指定して実行から、cmd と入力します

日本語入力
ALT+「半角/全角」

プロンプトの変更
カレントディレクトリが表示されて長すぎて邪魔な時に実行すると良いです

prompt $g

実行中のプログラムの強制終了
CTRL + C です。

※ まれに終了できないものもあります。
( そういう場合は、exit か quit でたいてい終わります )

最悪でも、タスクマネージャから強制終了できます

画面スクロールを一時停止したい場合
表示中に CTRL + S です が、

表示速度が速く、通常は都合よく止められ無いので

コマンド | more

を使います

フルスクリーン と 画面クリア と タイトル変更
フルスクリーン は ALT + Enter です
元に戻すのも ALT + Enter です

画面クリアは cls です

タイトル変更は、title 文字列 です。


タグ:日本語入力
posted by lightbox at 2009-07-12 15:40 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年06月19日


コマンドプロンプトからサービス開始

Service_name

コマンドプロンプトからサービスを開始するには、以下のどちらかを使用します
net start サービス名
net start "表示名"

同様に、停止する時は、
net stop サービス名
net stop "表示名"

です。

厳密には、サービス名 が正しいのですが、ツールとして上記のような利用方法に対応しているようです

※ 大文字小文字を区別しないようです
net start Spooler
net start spooler
net start "Print Spooler"
net start "print spooler"


関連する記事

WMIでローカルPCのサービス開始
WMIでリモートPCのサービス開始
ADSI による サービス開始

タグ:サービス
posted by lightbox at 2009-06-19 10:01 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年05月15日


キーボード入力をファイル化

置き換え
type con > a.txt

追加( Append )
type con >> a.txt

終了時は 改行入力後、CTRL+Z を入力してEnter です

type nul > ファイル名で、ファイルを空で初期化できます。


posted by lightbox at 2009-05-15 14:35 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする

2009年04月29日


アンパサンド(&) を使用してコマンドプロンプト(バッチファイル) のコマンドを一行で複数実行

以下は、ファイル名を指定して実行からの起動ですが、コマンドプロンプトを表示したままで保持し、必要がなくなればすぐ閉じる事ができます
cmd /c dir & pause

また、複数のアプリケーションをプログラムから呼び出したい場合で、バッチファイルを作りたくない場合に使用します。



posted by lightbox at 2009-04-29 10:39 | コマンドプロンプト | このブログの読者になる | 更新情報をチェックする
Seesaa の各ページの表示について
Seesaa の 記事がたまに全く表示されない場合があります。その場合は、設定> 詳細設定> ブログ設定 で 最新の情報に更新の『実行ボタン』で記事やアーカイブが最新にビルドされます。

Seesaa のページで、アーカイブとタグページは要注意です。タグページはコンテンツが全く無い状態になりますし、アーカイブページも歯抜けページはコンテンツが存在しないのにページが表示されてしまいます。

また、カテゴリページもそういう意味では完全ではありません。『カテゴリID-番号』というフォーマットで表示されるページですが、実際存在するより大きな番号でも表示されてしまいます。

※ インデックスページのみ、実際の記事数を超えたページを指定しても最後のページが表示されるようです

対処としては、このようなヘルプ的な情報を固定でページの最後に表示するようにするといいでしょう。具体的には、メインの記事コンテンツの下に『自由形式』を追加し、アーカイブとカテゴリページでのみ表示するように設定し、コンテンツを用意するといいと思います。


※ エキスパートモードで表示しています

アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります

<% if:page_name eq 'archive' -%>
アーカイブページでのみ表示される内容
<% /if %>

<% if:page_name eq 'category' -%>
カテゴリページでのみ表示される内容
<% /if %>

<% if:page_name eq 'tag' -%>
タグページでのみ表示される内容
<% /if %>
この記述は、以下の場所で使用します


Windows
container 終わり

フリーフォントで簡単ロゴ作成
フリーフォントでボタン素材作成
フリーフォントで吹き出し画像作成
フリーフォントではんこ画像作成
ほぼ自由に利用できるフリーフォント
フリーフォントの書体見本とサンプル
画像を大きく見る為のウインドウを開くボタンの作成

Android SDK ポケットリファレンス
改訂版 Webデザイナーのための jQuery入門
今すぐ使えるかんたん ホームページ HTML&CSS入門
CSS ドロップシャドウの参考デモ
PHP正規表現チェッカー
Google Hosted Libraries
cdnjs
BUTTONS (CSS でボタン)
イラストAC
ぱくたそ
写真素材 足成
フリーフォント一覧
utf8 文字ツール
右サイド 終わり
base 終わり