• ベストアンサー

バッチファイルでディレクトリ

の表示をしたいのですが dir/s>gomi.txt ではフィル名が表示されフルパスでファイルを表示してくれません 1行にファイルがプルパスで表示される形式でファイルリストを表示させるにはどうしたら良いのでしょうか? Linuxで言うところの find /root のときに表示される様にです

  • guuman
  • お礼率86% (1043/1206)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

dir /s /b でフルパス表示になります。 dir /b だとダメでした。 詳しくは dir /? でヘルプを表示してください。

guuman
質問者

お礼

ありがとうございます その方法でうまくいきました

その他の回答 (1)

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

ひょっとしたらできるのかな? と思って見守ってましたが、妙案はないようですね。 少なくとも、dirコマンドでは無理なんじゃ無いでしょうか? 私はいつも dir hoge.hoge >xyz.csv の用に吐き出したファイルを Excelで読み込み、フォルダ部分は数式とコピペで補間してました。 さらなる解決策が出てくると良いですね。

guuman
質問者

お礼

ありがとうございます /bオプションでうまくいきました

関連するQ&A

  • バッチファイルでテキストファイルの中身を置換

    dir C:\*.zip /b /a-d /s > ジップ.txt で作成した、ジップ.txtがあります。 このテキストファイルをパス名を削除してファイル名のみに置換したいのですが、どなたか教えて頂けますか?

  • MsDosでファイル名とファイル内の文字列の検索

    リナックスコマンドでいうところの find -name xxxx -exec grep $test {} \;の処理を コマンドプロンプトにて、利用したいと考えています。 dir xxxx /s /b | find "$test" こういった記述で出来るのではないかと考えたのですが。 findが"ファイル名"を検索するためファイルの中身を検索してくれません。 何かいい方法は御座いませんか? また、dirで取得したパスを配列に入れて、foreachでファイルの中身を検索し続けるということは可能でしょうか? よろしくお願いいたします。

  • バッチファイルについて

    バッチファイルについて バッチファイルの勉強をしておりますが、以下のバッチで 分からない箇所があります。 @echo off copy C:\bin\set.txt set.txt | find /v "コピー" echo ユーザー名を入力してください echo 入力後、Ctrlキーを押しながらZキーを押した後、Enterキー copy con inp.txt | find /v "コピー" copy set.txt+inp.txt setinp.bat | find "○○" call setinp.bat echo ユーザー名は%INP%と入力されました! del setinp.bat set.txt inp.txt <<不明箇所>> まず、C:\bin\set.txt』は set INP= とだけ書いたファイルです。 copy C:\bin\set.txt set.txt | find /v "コピー" ですが、|find /v"コピー"はなんのためにやっているのでしょうか?? find /vを調べてみると、指定した文字列を含まない行の内容をすべて画面に表示します。 と記載されていますが・・・・このバッチでは一体なぜ最初にいるのでしょう?? copy con inp.txt | find /v "コピー" ですが、コンソールから入力させた文字列をinp.txtに保存しているらしいのですが、 そのあとに、また、|find /v"コピー"がでてきますが、なぜでしょう??なにを したいのでしょう?? さらにまた、copy set.txt+inp.txt setinp.bat | find "○○"が出てきますが、 ここでなぜまた意味不明な、|find"○○"がでてくるのでしょう?? さらにさらに、バッチを実行してみると、set.txtの中身にはコンソールから 入力した文字は何も記載されていない、そして、inp.txtやsetinp.txtという テキストファイルも、どのフォルダにも出来ていません。 最後の行のdel setinp.bat set.txt inp.txtを消して実行してみても同じです。 なぜでしょう?? このバッチの動き、例としての意図が全く分かりません。。。。 この例題が悪すぎるのか、私の頭がわるすぎるのか・・・・ ちなみに、上記バッチは、http://www.geocities.co.jp/SiliconValley-SanJose/1227/batinput.html のサイトのものです。 どなたかご教授願います。。。一週間悩みましたが、まったく理解できない状態です。。。

  • 【Linux】findコマンドの表示順

    linuxのfindコマンドについて質問です。 例えば、あるディレクトリの構成が以下の通りだったとします。 /dir1/aaa.txt /dir1/zzz.txt /dir1/dir2/bbb.txt このとき、 find *.txt | sort を行うと /dir1/aaa.txt /dir1/dir2/bbb.txt /dir1/zzz.txt という順に表示されます。 (文字としてはソートされていますが、ディレクトリ構造としては滅茶苦茶です。) しかし、ファイル名を表示する際は通常はディレクトリ毎に表示したいため、 1つ目の例の順のように表示される必要があります。 このとき、どのようにすればfindによる検索結果を1つ目のようにディレクトリ順に表示できるのでしょうか。 実際はディレクトリ構成が複雑で、ファイルもディレクトリも非常に多くあります。

  • WindowsXP 記号チェック

    いつも大変お世話になっております。 WindowsXP SP3にて下記のバッチファイルがあります。 コード------------------------------------------------------ SETLOCAL ENABLEDELAYEDEXPANSION SET DIR_LIST=D:\TEST\FINSSTR\DIR.txt SET DIR=D:\TEST\FINSSTR\DIR SET FIND_OK_LIST=D:\TEST\FINSSTR\FIND_OK.txt SET FIND_NG_LIST=D:\TEST\FINSSTR\FIND_NG.txt Dir /s %DIR%\*.txt /b > %DIR_LIST% for /f "tokens=* " %%a in (%DIR_LIST%) do call :sub "%%a" echo "処理完了" :sub for /f "delims=" %%T in (%~1) do ( set LINE=%%T findstr "○" %~1 If !errorlevel!==0 ( echo !LINE!>>%FIND_OK_LIST% ) else ( echo !LINE!>>%FIND_NG_LIST% ) ) コード------------------------------------------------------ 該当フォルダ(サブフォルダ含む)にて 【.TXT】の拡張子で"○"の記号がファイル内にあるかをサーチする バッチを作成してみました。 ○があれば、FIND_OK_LISTに ・・・なければFIND_NG_LISTに検索対象ファイル名(フルパス付き)で それぞれ出力するバッチです。 しかし実行してもうまく稼動しません。 DIR.txtまでは作成されています。 何に問題があるのでしょうか? 他のバッチ等をCALLせず、かつVBS等も使わず バッチ1本で実現したいのですが可能でしょうか? ※何かしらのソフトで実施したくもないです。 ご存知の方がいれば、ご教授願いますでしょうか? 以上、何卒宜しくお願い致します。

  • ファイルを移動するためのバッチファイル

    テキストファイル(1行に1つのファイル名が書かれていて、ファイルの数だけの行があるテキスト)を読み込み それをもとに、パス指定した参照先ディレクトリより、1つずつファイルを取得し、 パス指定した保存先ディレクトリに保存していくという、ファイルを移動(コピー)するためのバッチファイルを作りたいのですが どのようなコマンドを記述すればよいでしょうか? (できれば、MS-DOSのバッチファイルだと助かります) 例 [list.txt] aaaaa bbbbb eeeee [参照先] aaaaa bbbbb ccccc ddddd eeeee ↓ [保存先] aaaaa bbbbb eeeee

  • バッチファイルの質問です。

    バッチファイルの質問です。 作成しているのですが、最後のif "%BASE_PATH%" == "" ( がどうしても通りません。 表記がおかしいんでしょうか? また別のいい方法があれば教えてください。 rem ************************************************** rem 処理名 :送受信ファイル削除 rem 処理概要 :送受信フォルダのファイルを削除する rem ファイル名 :FILE_DELETE.bat rem 引数 :(1)ファイルID[12文字] (2)データ区分[S:送信、R:受信] rem 戻り値 :正常:0、異常:2 rem ************************************************** rem **** 初期処理 **** set SCRIPT_NAME=FILE_DELETE set TMP_HR=%time: =0% set "DATE_STR=%date:~0,4%%date:~5,2%%date:~8,2%%TMP_HR:~0,2%%time:~3,2%%time:~6,2%%time:~9.2%" set RETCODE=0 set ROOT_P= set ROOT_P=D:\HOME\If set LOG_PATH=D:\HOME\Log set LOG_NAME=%SCRIPT_NAME%_%1.log set BASE_PATH="" rem **** 処理ベースのPATH設定 **** set ARGV1=%1 set AITE_DIR=!ARGV1:~0,2! if "%AITE_DIR%" == "ST" ( set BASE_PATH=%ROOT_P%\ST010 ) if "!ARGV1:~0,5!" == "LE70S" ( set BASE_PATH=%ROOT_P%\LE020 ) rem **** ベースPATHの設定失敗 **** if "%BASE_PATH%" == "" ( echo %DATE% %TIME% %COMPUTERNAME%:ERR-00204 ベースPATHがありません >> "%LOG_PATH%\%LOG_NAME%"

  • バッチファイルで<&4と4<%1は何をしているの?

    MS-DOSバッチファイルで、 コマンド1 > ファイル名 2>&1 というような書き方をして、 標準出力だけでなくエラー出力もファイルに書き出すことが できることは理解しています。 そして、数値は0,1,2の3つがあり、各々、 ハンドルSTDIN(キーボード入力) ハンドルSTDOUT(コマンドプロンプトウィンドウへの出力) ハンドルSTDERR(コマンドプロンプトウィンドウへのエラーの出力) であることも理解しています。 しかし、 この数値が3以上で使用されているコードを見かけました。 例えば、 ネット上に以下のコードがあったのですが、 SET /P s1= >NUL <&4 の「>NUL」の部分は、 メッセージが画面に表示されないようにしていると思いますが、 「&4」の部分と 最後の行の4<%1の「4」の部分は何をしているのでしょうか。 実際に動かしてみると、 %1(file1.txt)ファイルの各行が、1行ずつ、 4という名前の変数(ハンドル?)に順番に入っていき、 &4の部分でそれを取り出して、 環境変数s1に代入(セット)しているように見えます。 私は、バッチファイルで、 このような(3以上の数値を使った)使用法を いままでに見たことがありませんでした。 このような使い方を詳しく解説しているサイト がありましたら教えてください。 よろしくお願いします。(Windows10) ---Paste.CMD--------------------------------- @ECHO OFF SETLOCAL ENABLEDELAYEDEXPANSION (FOR /F %%0 IN ('FIND /C /V ""') DO SET a1=%%0) <%1 (FOR /F %%0 IN ('FIND /C /V ""') DO SET a2=%%0) <%2 IF %a1% LSS %a2% SET /A a1=a2 (FOR /L %%k IN (1,1,%a1%) DO ( SET s1= SET s2= SET /P s1= >NUL <&4 SET /P s2= >NUL <&5 ECHO:!s1! !s2! ) ) 4<%1 5<%2 ------------------------------------ 使用例 paste file1.txt file2.txt ------------------------------------

  • FTPで見えるファイルと見えないファイルがあります。

    FTPで見えるファイルと見えないファイルがあります。 CentOS5.4にvsftpdをインストールして、PCからFTP転送を行おうとしています。 /tmpディレクトリにファイルを転送すると、FTPツールに転送したファイルは表示されますが、 元々/tmpにあったファイルはFTP転送ツールに表示され無い状態となっています。 ・FTP転送ツールを再起動しましたが、転送したファイルしか見えません。 又、FTP転送ツールではなく、DOS窓上でFTP接続して、DIRで見た時も転送したファイルしか見えません。 このことから、FTPツールの問題ではなく、FTPサーバー側の問題を判断しました。 ・Linuxサーバを再起動しても、転送したファイルしか見えません。 ・Linuxサーバ上で、転送したファイルを"cp -p"でコピーした場合、コピーしたファイルはFTPツール上見えません。 現在Linux上では、 tmp>ll -rw-r--r-- 1 root root 2 5月 13 17:20 a1.txt -rw-r--r-- 1 root root 2 5月 13 17:20 a2.txt -rw-r--r-- 1 root root 2 5月 13 17:20 b1.txt となっているのですが、 a1.txt:FTP転送したファイル a2.txt:a1.txtを cp -p a1.txt a2.txtでコピーした b1.txt:viで作成した FTPコマンドで見ると、 ftp> dir 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. -rw-r--r-- 1 0 0 2 May 13 08:20 a1.txt というようにa1.txtしか見えません。 原因はわかりましたらご教授ください。よろしくお願いいたします。

  • PHPでディレクトリーとそのサブディレクトリー表示

    PHPでディレクトリーとそのサブディレクトリーの中のファイルを表示して、ファイルであればダウンロード用のリンクを付け加えたいと思いますが、ここで嵌ってしまっています。 以下はソースコード(コメントアウトされている部分は試したコード、すべてだめだった) $dir = $_SERVER['DOCUMENT_ROOT'].'/projects/website/uploaded'.'/'.$_GET['user']; function getDirContents($dir) { global $basedir; $path=pathinfo($dir); $path1=$basedir.'/'.basename($dir); //echo $path1; //$path1=basename($dir); if (is_dir($dir)) { //$path1 .= basename($dir); //$path1 .='/'.basename($dir); $dirs = explode('/', $dir); $last_dir = $dirs[count($dirs) - 1]; echo '<strong>'.$last_dir.'</strong>'; if ($dh = opendir($dir)) { echo '<ul>'; while (($file = readdir($dh)) !== false) { if ($file == '.' || $file == '..' || substr($file,0,1)=='.') {} else { echo '<li>'; if (is_dir($dir.'/'.$file)) { $path1 .='/'.basename($file); getDirContents($dir.'/'.$file); } else { //echo $path1; $path2=pathinfo($path1); echo '<a href="'.$basedir.$path1.'/'.$file.'">'.$file.'</a>'; } echo '</li>'; } } echo '</ul>'; closedir($dh); } } return false; } getDirContents($dir); 因みにウェブサイトは、サーバーの/projects/website/にあります。表示したいフォルダはprojects/website/uploaded/にあります。そしてサブフォルだは/projects/website/uploaded/(ユーザ名)/(フォーム番号)/ わかる方がいらっしゃいましたら、ご回答を宜しくお願いいたします。

    • ベストアンサー
    • PHP