[前の記事]« 日本語のファイル名のコピー
[次の記事]「ユーザー名」「パスワード」などをバッチ処理で自動応答させたい »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ

[NT]DIRの出力のイメージでフォルダ配下のファイル一覧を取得したい

218.
フォルダ配下のファイル一覧
2004年02月06日(金) 15時17分
SnowMan
OS:WindowsNT。

TREEコマンドで、特定フォルダの一覧表示をする事ができますが、
DIRのイメージで表示する事は可能でしょうか?

イメージ)
特定フォルダに、TMP1と、TMP2のフォルダが存在していた
場合、以下の様に表示したいのですが。

2004/01/01 10:10 .\TMP1\AAA.TXT
2004/01/01 10:11 .\TMP1\BBB.TXT
2004/01/02 10:12 .\TMP2\AAA.TXT
2004/01/02 10:13 .\TMP2\BBB.TXT
221.
2004年02月06日(金) 17時57分
oo
>OS:WindowsNT。

>TREEコマンドで、特定フォルダの一覧表示をする事ができますが、
>DIRのイメージで表示する事は可能でしょうか?

>イメージ)
>特定フォルダに、TMP1と、TMP2のフォルダが存在していた
>場合、以下の様に表示したいのですが。

>2004/01/01 10:10 .\TMP1\AAA.TXT
>2004/01/01 10:11 .\TMP1\BBB.TXT
>2004/01/02 10:12 .\TMP2\AAA.TXT
>2004/01/02 10:13 .\TMP2\BBB.TXT

for /r %F in (*) do @echo %~tF %~fF
で、年が2桁でファイル名がフルパスという違いはありますが、近いものが出るので、後はエディタかExcelで加工すればよいと思います。
225.
Re2:フォルダ配下のファイル一覧
2004年02月07日(土) 23時51分
Hellcat
>for /r %F in (*) do @echo %~tF %~fF
>で、年が2桁でファイル名がフルパスという違いはありますが、
>近いものが出るので、後はエディタかExcelで加工すればよいと思います。

確かにエディターやSEDなどで置き換えたりする方法が手っ取り早いと思います。が、ちょっとここで相対パスを表示させることにこだわってみました。

2004/01/01 10:10 .\TMP1\AAA.TXT のように、相対パス表示で一発で出力できるコマンドは、寡聞にして知りませんが、いくつかのコマンドの出力を加工するれば実現はできそうです。

で、相対パスでの表示はfree SoftのUnix like toolsにあるfindfコマンドで可能です。
ooさんが示されたforコマンドの出力結果を使い、絶対パスファイル名の部分をfindfコマンドで取得した相対パスファイル名に置き換えるコマンドを考えてみました。

(ちょっと面倒なのですが)
for /r %F in (*) do @echo %~tF %~fF > piyo_1.txt
cd \hoge\baz (tmp1の親ディレクトリー)
findf .\tmp[12] -type f -printms > piyo_2.txt
sort +2 piyo_1.txt > piyo_1s.txt
sort +0 piyo_2.txt > piyo_2s.txt
cat -n piyo_1s.txt > piyo_1sn.txt
cat -n piyo_2s.txt > piyo_2sn.txt
joinf -a 1 -j1 1 -j2 1 -o 1.2 1.3 2.2 piyo_1sn.txt piyo_2sn.txt > piyo_3.txt

(1)―forコマンドの実行結果をpiyo_1.txtにリダイレクトする―
for /r %F in (*) do @echo %~tF %~fF > piyo_1.txt

(2)―tmp1とtmp2ディレクトリー中のファイル名称を相対パスでpiyo_2.txtに取得する―
カレントディレクトリーをtmp1の親ディレクトリーへ移動し、tmp1,tmp2の二つのディレクトリーを対象にfindfコマンドを実行する。
例えば、ディレクトリー構造が \hoge\baz\tmp1\ となっている場合
cd \hoge\baz
findf .\tmp[12] -type f -printms > piyo_2.txt

これでtmp1,tmp2ディレクトリーの全てのファイル名称(システム属性ファイルや隠し属性ファイルを含む)が、以下のようにpiyo_2.txtに出力される。
.\tmp1\aaa.txt
.\tmp2\aaa.txt

(3)―ソート―
forコマンドの出力順とfindfコマンドの出力順を揃えるため、piyo_1.txtとpiyo_2.txtをファイル名称の上昇順にソートする(sortコマンドはUnix like toolsのものを使う)。
sort +2 piyo_1.txt > piyo_1s.txt
sort +0 piyo_2.txt > piyo_2s.txt

(4)―マッチングキーのセット―
piyo_1s.txtとpiyo_2.txtファイルをjoinfコマンドを使用してマッチングさせるため、共通キー(行頭に行番号)をセットする。
cat -n piyo_1s.txt > piyo_1sn.txt
cat -n piyo_2s.txt > piyo_2sn.txt

(5)―相対パスファイル名称への置換え―
piyo_1sn.txtファイルの第2フィールド(日付)、第3フィールド(時刻)、 piyo_2sn.txtファイルの第2フィールド(相対パスファイル名)をpiyo_3.txtに出力する。
joinf -a 1 -j1 1 -j2 1 -o 1.2 1.3 2.2 piyo_1sn.txt piyo_2sn.txt > piyo_3.txt

これでpiyo_3.txtに
2004/01/01 10:10 .\tmp1\aaa.txt のようなスタイルで結果が出力できたこととなります。
ただし、ファイル名称は小文字です。

注意事項
findfコマンドはシステム属性や隠し属性のファイル名称も出力してしまいます。
forコマンドがこのような属性を持つファイルをどのように扱っているのか確認していませんが、findfとforコマンドが出力するファイル数は必ず一致していなければなりません。これらが結果的に異なる場合、このコマンドは使えません。

参考
使用したfindf,cat,sort,joinfの各コマンドはFreeSoftのUnix like toolsに収容されています。
http://www.piedey.co.jp/softs/ntuxtl006.lzh
226.
Re3:フォルダ配下のファイル一覧
2004年02月08日(日) 01時06分
oo
ooです。

>>for /r %F in (*) do @echo %~tF %~fF
>>で、年が2桁でファイル名がフルパスという違いはありますが、
>>近いものが出るので、後はエディタかExcelで加工すればよいと思います。

この手のデータはどうせ後でExcelで加工するんだろうと思って、1行コマンドで書きました。

>確かにエディターやSEDなどで置き換えたりする方法が手っ取り早いと思います。が、ちょっとここで相対パスを表示させることにこだわってみました。

ということなら、コマンド一発でなく、バッチファイルになりますが、こんな感じでどうでしょうか。年もついでに2桁に。XPで動作確認しましたが、NTだと微妙にCMD.EXEの機能が違うのでもしかしたらそのままでは駄目かも。

@echo off
setlocal enabledelayedexpansion
for /r %%F in (*) do (
  set DATETIME=%%~tF
  set FILENAME=%%~fF
  echo !DATETIME:~2,14! !FILENAME:%CD%=.!
)

>で、相対パスでの表示はfree SoftのUnix like toolsにあるfindfコマンドで可能です。

findf を使うなら、-printf で出来るのでは?と思いましたが、findfには gnu find の -printf 機能が無いですね。残念。
227.
Re4:フォルダ配下のファイル一覧
2004年02月08日(日) 01時15分
oo
ooです。

すいません。さっきの間違い。もともとの希望が年4桁でしたね。

>>>for /r %F in (*) do @echo %~tF %~fF
>>>で、年が2桁でファイル名がフルパスという違いはありますが、

と書いた時は、ちょうどコントロールパネルで年月日形式を年2桁にしてたので私の勘違いです。デフォルトだときっと年4桁でしょう。
ということで、
>  set DATETIME=%%~tF
>  set FILENAME=%%~fF
>  echo !DATETIME:~2,14! !FILENAME:%CD%=.!
は、
set FILENAME=%%~fF
echo %%~tF !FILENAME:%CD%=.!
でいいです。
 
 


カテゴリー「DIR…ディレクトリ(フォルダー)/ファイルの一覧」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2004年02月06日 12:04に投稿されたエントリーのページです。

ひとつ前の投稿は「日本語のファイル名のコピー」です。

次の投稿は「「ユーザー名」「パスワード」などをバッチ処理で自動応答させたい」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート