ついに夏本番!さぁ、家族でキャンプに行くぞ! >>

batファイルを使用して、「dir」コマンドの結果を、既存のテキストファイル「dir.log」に出力したいのですが、実装方法を教えていただけないでしょうか?

詳細:
・dirバッチ:C:\work\dir.bat
・ログファイル:C:\work\dir.log
・dirで出力したいフォルダ:D:\work\配下

以下のリダイレクト?を使用して上書きしたいです。
dir >> dir.log

どうか、ご教授お願いいたします。

A 回答 (3件)

■追記する場合


 dir D:\work >> dir.log

■新規作成する場合
 dir D:\work > dir.log

新規作成した場合、前の内容は残りませんので、別途バックアップを取る必要があれば、それなりの対策が必要です。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!

とても親切でかつ、わかりやすいご説明ありがとうございました。
私のわかりにくい説明を理解して頂き誠にありがとうございました。。

お礼日時:2011/04/12 17:05

dir D:\work\ >> C:\work\log.txt

    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!

私のわかりにくい説明を理解して頂き誠にありがとうございました。。

お礼日時:2011/04/12 17:06

:C:\work\dir.batの中身を 下記内容でどお?



  dir > C:\work\dir.log
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました!

一番にご回答いただいたのですが、私の説明不足のようで、
ご回答のソースでは、要件を満たせませんでした。。。

お礼日時:2011/04/12 17:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。

Qbatファイルの結果をテキストに吐き出すには?

以下のようなWindowsユーザーのパスワード変更batの結果(正常に出来たかどうか?)をCドライブに吐き出したいのですが、どうbatファイルを書き換えればよいでしょうか?
(とりあえず以下の内容でbatをたたいたのですが、うまく結果が出ません。。。)

henkou.bat
--------------------------------------
net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain
henkou.bat > c:\henkou結果.txt
pause
--------------------------------------

吐き出されたhenkou結果.txt
--------------------------------------
C:\>net user "test user1" ps123456 /domain
--------------------------------------

DOS画面(吐き出したいもの)
--------------------------------------
C:\>net user "test user1" ps123456 /domain
コマンドは正常に終了しました。

C:\>net user "test user2" ps456789 /domain
コマンドは正常に終了しました。

C:\>henkou.bat 1>c:\henkou結果.txt
--------------------------------------

以下のようなWindowsユーザーのパスワード変更batの結果(正常に出来たかどうか?)をCドライブに吐き出したいのですが、どうbatファイルを書き換えればよいでしょうか?
(とりあえず以下の内容でbatをたたいたのですが、うまく結果が出ません。。。)

henkou.bat
--------------------------------------
net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain
henkou.bat > c:\henkou結果.txt
pause
--------------------------------------

吐き出されたhenkou結果.t...続きを読む

Aベストアンサー

henkou.bat
--------------------------------------
@ECHO OFF

IF NOT EXIST %temp%\Redirect.txt GOTO REDIREXEC

@ECHO ON

net user "test user1" ps123456 /domain
net user "test user2" ps456789 /domain

@ECHO OFF

GOTO END

:REDIREXEC

ECHO REDIRECT > %temp%\Redirect.txt

CALL TEST.BAT > c:\henkou結果.txt

DEL %temp%\Redirect.txt

PAUSE

:END
--------------------------------------

こんな感じでどうでしょうか。

Qコマンドプロンプトによるフォルダ内のファイル存在有無

バッチ処理で、特定のフォルダ内(配下にフォルダとファイルが混在している)でファイルだけの存在有無を調べて、ファイルが存在している場合とファイルが存在していない場合で処理を別々に行わせようとしたいのですが、ファイルの存在有無はどのようにコマンドで調べれば良いでしょうか?

DIR C:\test\*.* でファイルを調べて、ERRORLEVELでif判定させようと思っているのですが、 DIRコマンドでこれを行うと、フォルダまで表示されます。

どのようにしたら良いのでしょうか?教えてください。

Aベストアンサー

コマンドプロンプトで、「DIR /?」と入力すれば、DIRコマンドのヘルプが表示されます。

その記述によれば
「/A」属性スイッチで、必要な属性を持つファイルを指定できます。

QDOSコマンドで共有ファイルへアクセスを行う際のパスの書き方

初めまして。

本題になります・・・

DOSコマンドで共有ファイルのアクセスを行う際のパスの書き方は、
「\\サーバー名\共有フォルダ名\ファイル名」ですが、DIRなどを行うと、認証が走って、ファイルへのアクセスが出来ません・・・全てDOSコマンド(バッチ)で完結したいのですが・・・
例えば、「dir \\サーバー名\共有フォルダ名\ファイル名」とした場合に、「ログオン失敗: ユーザー名を認識できないか、またはパスワードが間違っています。」と表示されてしまいます。
現在行いたい処理は、他サーバーの「共有ファイルのコピー&削除」、「共有フォルダの作成」です。

【環境】
コマンド実行させるサーバー:[WIN2KSEVER(admini権限/パスワード共通)]
他サーバー:[WIN2KSERVER(admini権限/パスワード共通)]

解決する方法がありましたら、お教え下さい。
お願いします。

Aベストアンサー

実際に試してみました。

net use \\サーバー名 パスワード /user:ユーザー名
dir \\サーバー名\共有フォルダ名\ファイル名

でいけました。

Qコマンドプロンプトでフォルダの容量を表示させるには

コマンドプロンプトを使って指定したフォルダ直下のファイルやフォルダの各容量を表示させたいです。
dir "フォルダ名" /s a-dを実行すると以下の様に表示できることから
-------------------------------------------
"xxxのディレクトリ"
xxx
xxx
xxx
xxx
n個のファイル xxxバイト
--------------------------------------------

パイプを使って以下の様なイメージでfindでor条件を使い、フォルダ名とバイト数を表示させたいのですが、findにはor条件がないという噂を聞き、落胆しています。

(コマンドのイメージ)---------------------------------
dir "フォルダ名" /s a-d | find "のディレクトリ"or"バイト"

---------------------------------------------------
(結果のイメージ)-----------------------------------
"xxxのディレクトリ"
n個のファイル xxxバイト

"xxxのディレクトリ"
n個のファイル xxxバイト

"xxxのディレクトリ"
n個のファイル xxxバイト

ファイルの総数:
     xxx個のファイル   xxxxバイト
xxx個のディレクトリ   xxxxxバイトの空き容量
---------------------------------------------------

上の様なイメージで出力できるようなコマンド、どなたか教えて下さい。
宜しくお願いします。

コマンドプロンプトを使って指定したフォルダ直下のファイルやフォルダの各容量を表示させたいです。
dir "フォルダ名" /s a-dを実行すると以下の様に表示できることから
-------------------------------------------
"xxxのディレクトリ"
xxx
xxx
xxx
xxx
n個のファイル xxxバイト
--------------------------------------------

パイプを使って以下の様なイメージでfindでor条件を使い、フォルダ名とバイト数を表示させたいのですが、findにはor条件がないという噂を聞き、落胆しています。

(コマ...続きを読む

Aベストアンサー

こんにちは。

findの代わりにfindstrをつかわれたらどうでしょうか。

dir /s /a-d | findstr /L "ディレクトリ ファイル"

Qフォルダ内の、最新のタイムスタンプのファイルを1つだけ取り出す(VBscript)

フォルダ内に複数のファイルが存在しており、その中でタイムスタンプが一番最新のファイルをコピーしたいと考えているのですが、ファイル同士のタイムスタンプを比較する方法が見つけられませんでした。どなたかご存知の方がいらっしゃいましたら、教えて頂けませんか?

Aベストアンサー

私が書いたスクリプトの後ろにkhaii21さんが書き足されたんですよね?

不思議ですねぇ。本当に書かれたものそのままなら、
>strNewFileName2 = objFile.Name

この行通るはず無いんですけど。
strNewFileName2、空のままのはずです。

通らない理由は、
>If dtmMostNewTimeStamp < objFile.DateLastModified Then

です。dtmMostNewTimeStampより新しいファイル、strNewFileName以外であるわけ無いですよね。


と、khaii21さんが書かれたスクリプトについて解説してみましたが、2番目に新しいファイルを見つけるのに列挙しなおす必要なんて無いですよ(^^;;;


私が書いたスクリプト、ちょっと直すだけで1番目と2番目両方取れます。

Dim strNewFileName
Dim dtmMostNewTimeStamp

Dim strNewFileName2
Dim dtmMostNewTimeStamp2

'ファイルを列挙
For Each objFile In objFolder.Files

If dtmMostNewTimeStamp < objFile.DateLastModified Then

dtmMostNewTimeStamp2 = dtmMostNewTimeStamp
strNewFileName2 = strNewFileName

dtmMostNewTimeStamp = objFile.DateLastModified
strNewFileName = objFile.Name

ElseIf dtmMostNewTimeStamp2 < objFile.DateLastModified Then

dtmMostNewTimeStamp2 = objFile.DateLastModified
strNewFileName2 = objFile.Name

End If

Next

考え方は、列挙したファイルが今までで一番新しかったら
・前の1番目→2番目
・列挙されたファイル→1番目
に、

1番目より古いけど、それまでの2番目よりは新しければ、

・前の1番目→そのまま1番目
・列挙されたファイル→2番目

になりますよね。

私が書いたスクリプトの後ろにkhaii21さんが書き足されたんですよね?

不思議ですねぇ。本当に書かれたものそのままなら、
>strNewFileName2 = objFile.Name

この行通るはず無いんですけど。
strNewFileName2、空のままのはずです。

通らない理由は、
>If dtmMostNewTimeStamp < objFile.DateLastModified Then

です。dtmMostNewTimeStampより新しいファイル、strNewFileName以外であるわけ無いですよね。


と、khaii21さんが書かれたスクリプトについて解説してみましたが、2番目に新しいファ...続きを読む

QDOSコマンドで cmd /c rd /s /q c: の意味は?

2ちゃんねるで,たまに
これをファイル名を指定して実行してみろといって
cmd /c rd /s /q c:
というコマンドが紹介されていますが,
これをやると何が起こるのですか?

Aベストアンサー

絶対に実行してはダメですね。
Cドライブのデータを全て削除するコマンドです。

CMD /C ○○ ・・・ ○○のコマンドを実行する

RD /S /Q △△ ・・・ ディレクトリを削除する
          /Sでその場所配下の全てのファイルを削除
          /Qで削除のメッセージを表示しない

Qバッチ処理でファイルの中身を変数に入れるやり方

あるファイルの中には1行の文字列があります。
このファイルをバッチで読み取り、変数に設定したいです。

例:
test.txt
abcacbacbacbacbacbacbacbacb

test,bat
set DATA=[test.txtを読み込んだ値]

よろしくお願い致します。

Aベストアンサー

これですね。

参考URL:http://www.upken.jp/kb/dqvgHNRUxwFDkmtoqEwfXHUjDrevNv.html

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

Qコマンドプロンプトの「%1」と「%~1」の違いがわからない

コマンドプロンプトの「%1」と「%~1」の違いがわからない
このサイトにhttp://ykr414.com/dos/bat.html
%~1は「全ての引用句(")を削除して%1を展開する。」とありますがよくわかりません。

%1は入力されたファイルのフルパスだと思っているのですけど。
"%1"=%~1ということでしょうか。

Aベストアンサー

%1は、バッチファイルに指定された「第一引数」です。
バッチファイルに限らず、プログラムを実行するときには引数を指定することができます。
単純に関連づけて実行するとかバッチファイルのアイコンにファイルをにドラッグドロップするとかだと、引数は一つない場合が多いですが、
実際にはショートカットを作ったりコマンドプロンプトから指定するとか、二つ以上の引数を指定することができます。
その際、引数と引数の間はスペースで区切られます。(引数指定全体の文字列を、スペースで区切って各引数に分割する)

一方、例えば、マイドキュメントフォルダ「C:\Documents and Settings\ユーザー名\My Documents」を引数にを指定した場合、そのままだとフォルダ名に空白が入ってるので、
%1=C:\Documents
%2=and
%3=Settings\ユーザー名\My
%4=Documents
と、指定した一つの名前が複数の引数に分断されてしまします。

そこで、こういう場合には、ダブルクオートでファイル名を括ります。
プログラム起動時の引数に 「"C:\Documents and Settings\ユーザー名\My Documents"」
といった感じで、ダブルクオートを付けたものを指定すると、
%1="C:\Documents and Settings\ユーザー名\My Documents"
と、括られた部分がまとめて一つの引数と取り扱われるようになります。
そして、この時%~1は
%~1=C:\Documents and Settings\ユーザー名\My Documents
になります。

%1と%~1の使い分けですが、
引数をこのままファイル名として使う時は、%1をそのまま使えば問題ないのです。
(バッチファイルから別のプログラムを起動するときにファイル指定するとかだったら、
%1を使えば、ダブルクオート込みで渡されるので、そのまま一つの引数としてつかます)

一方、フォルダを指定してそのフォルダ下のファイル名を作る、といった処理をしようとする時には、
ダブルクオートが邪魔なので、そういう時は%~1を使います。
たとえば、指定した引数をフォルダとして、そのフォルダ下の「新規作成データ.txt」ファイルを表すフルパスのファイル名を作りたい場合、

単に
 「%1\新規作成データ.txt」とすると、「"C:\Documents and Settings\ユーザー名\My Documents"\新規作成データ.txt」になってしまいますが、

「"%~1\新規作成データ.txt"」とすれば「"C:\Documents and Settings\ユーザー名\My Documents\新規作成データ.txt"」という、正しくクオートされたファイル名を作ることができます。

%1は、バッチファイルに指定された「第一引数」です。
バッチファイルに限らず、プログラムを実行するときには引数を指定することができます。
単純に関連づけて実行するとかバッチファイルのアイコンにファイルをにドラッグドロップするとかだと、引数は一つない場合が多いですが、
実際にはショートカットを作ったりコマンドプロンプトから指定するとか、二つ以上の引数を指定することができます。
その際、引数と引数の間はスペースで区切られます。(引数指定全体の文字列を、スペースで区切って各引数に分割す...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報