• ベストアンサー

batファイルについて

C:\work\a\a.txt C:\work\a\b.txt C:\work\a\c.txt C:\work\b\a.txt C:\work\b\d.txt C:\work\c\a.txt C:\work\d\a.txt C:\work\d\e.txt C:\work\d\f.txt 上記のようなファイルがあったとき 各ディレクトリのa.txtだけを残したいのですが (他のファイルは全部削除) どのようなbatファイルを作成すればよろしいのでしょうか。 すみませんが方法がありましたら教えてください。

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

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

単純に考えると for /f "delims=" %%f in ('dir /s c:\work\?.txt | findstr /E a.txt') do del "%%f" だけど, c:\work にこれ以外のファイルがあったらどうなるかは知らない. あと, いきなり削除するのは危険なのでまずは del のところを echo に変えてみて「目的のファイル名」だけになっていることは確認してね.

その他の回答 (1)

  • mako_tyo
  • ベストアンサー率37% (61/161)
回答No.1

if文を使えば、できると思いますが。。。。 ふと思いついた方法 1 a.txtをa.txt_saveへリネーム 2 *.txtでファイル削除 3 a.txt_saveをa.txtへリネーム 無理やりな感じがしますが、構文も簡単になるのでどうでしょうか? (笑 もっと最適な方法があると思います

関連するQ&A

  • batファイルについて教えてください

    以下の要件を満たすbatファイルを作成したいと思います。 ・5区切りのCSVファルイを以下のように変数に代入する  読み込みファイル例 列 a , b , c , d , e 111,222,333,444,555 111,222,222,666,777 111,111,123,888,999 行全体を%%a、c列を%%c e列を%%eへ代入 a,b,c,d,e ⇒ %%a c ⇒ %%c e ⇒ %%e ・%%cに3を含むものを確認したい ・if文を使用に3を含むものを処理対象にしたい ・3を含むものに処理を行った後それぞれ以下のようにファイル書き出しを実施したい。     %%a ⇒ zenbun.txt %%c + %%e ⇒ bassui.txt ・処理終了 forやifを使うんだろうなぁ、、程度しかわからず全く詳細な構成がわかりません。 どなたか教えていただけませんでしょうか? よろしくお願いします。

  • batファイルでrenameができません。

    Windowsのbatファイルでrenameをするにはどうすればよいでしょうか? カレントディレクトリ └ A というディレクトリ構造があって、Aの中には「a.txt」があるとします。 カレントディレクトリから、 「rename "./a/A.txt" B.txt」 と書いてあるbatファイルを起動しても、「a.txt」の名前が変更されません。 「指定したパスが見つかりません。」と出てきてしまいます。 ダブルクォーテーションを取ったりつけたり、絶対パス、相対パスを書いたりと いろいろ試しましたがだめでした。 何か方法はないでしょうか?

  • bat ファイルの実行制御

    10台(例)A/B/C/D/E/F/G/H/I/J PCがありそのうちの5台A/B/C/D/Eはbatファイルの処理を途中までとしたいです。 batファイルを実行した際に実行しているPCの名前を確認して処理を続行or終了 したいのですが何か良い方法はないでしょうか? 例えばテキストファイル内にA~EのPC名を記載しておいてbatファイル実行時にはテキストファイルを確認して該当のPCじゃないか確認 等・・・

  • batコマンド ファイルの一覧

    batファイルを使用して、指定したフォルダの中にあるテキストファイルの一覧を「一覧.txt」というファイルを新規作成して、そのファイル内に記載したいのですが何か良い方法はないでしょうか? ご教示お願いします。 (例) フォルダAの中にテキストA、テキストB、テキストCがある。 batファイルを実行すると同フォルダ内に「一覧.txt」が作成され、ファイルを開くと テキストA テキストB テキストC と記載されている。

  • batファイルの相対パス

    batファイルの相対パス あるバッチが相対パスであるファイルを参照しています このバッチファイルを直接起動すれば、正しく参照できますが、 別のディレクトリにいる別のバッチファイルからcallされた場合、 呼び出し先の相対パスではなく、 呼び出し元の相対パスになってしまいファイルを参照できません。 この問題をスマートに解決する方法はありませんか? 例のchild.batからはfile.txtを参照できますが、 parent_1.bat経由の場合、ファイルが見つかりませんとなります。 child.bat の中で、「cd c:\dir_a」を書いて基点を変更すればとりあえずは行けそうですが、可能な限り絶対パスのベタ書きは避けたいです。 宜しくお願いします。 【例】 c:\ | +-dir_a | | | +-child.bat | | | +-file.txt | +-dir_b | | | +-parent_1.bat | +-dir_c | +-parent_2.bat ===== file.txt ===== test-test-test ===== file.txt ===== ===== child.bat ===== type ./file.txt pause ===== child.bat ===== ===== parent_1.bat ===== call c:\dir_a\child.bat ===== parent_1.bat =====

  • batファイルの強制終了を回避したい

    batファイルを作成する際、 batファイルに書かれた処理が終わると、batファイルは終了してしまいますが、それを回避したいです。 例えば、カレントディレクトリをE:\work_folderにして作業をしたいときに、 cd E:\work_folder; とだけ記述されているbatファイルを作ったら、 ディレクトリを変更したらそのまま終了してしまって、 作業を続けられませんし、 また、 cd E:\work_folder; pause; と記述したら、『続行するには何かキーを押してください . . .』 のメッセージの後、何かのキーを押した後に、結局DOSプロンプトは閉じてしまいます。 継続してコマンドを打ちたいのですが不可能でしょうか?? 宜しくお願いします。

  • コマンドプロンプトで.batファイルを作っています。

    古いバックアップディレクトリを削除するバッチファイルを作りたいです。 cd /d e:\fileDir REM:【最終のディレクトリを削除】 for /F %F in ('dir /b /o:-d') do set fname=%F rmdir /s /q %fname%  をコマンドプロンプト画面に貼り付ければ上手く動作しますが*.batと名前を付けて保存したものをダブルクリックでは全く動作しません。  コマンドプロンプト上で実行するのとバッチファイルで実行することの違いについて調べてみましたがなかなか動作するものになりません。  どなたかご教示いただけないでしょうか    

  • 古いフォルダーを削除するbatファイル

    batファイルでディレクトリのバックアップを行いました。 このバックアップを行うときに古いディレクトリを 削除するbatファイルを考えているのですがうまくいきません。 どなたかお知恵をお貸しください。 下記のように名前が付けられたディレクトリがあります。 090601 090602 090603 090604 このディレクトリの日付が古いディレクトリを削除するようにしたい。 (上記の場合090601が該当) 変数にディレクトリの090601を入れられるようなbatを作ればいいのでしょうが。 それが浮かびません。 どのようにしたらよろしいでしょうか??

  • 1つのファイルを複数のディレクトリにコピーする

    ディレクトリAの中に ディレクトリ B ディレクトリ C ディレクトリ D ディレクトリ E ファイル F があるとします.ここでファイルFをB,C,D,Eにコピーするにはどうコマンドを打てばよいのでしょうか?

  • 最新更新日のBATファイルコピーについて。

    最新更新日のBATファイルコピーについて。 どなたか教えてください。 BATを夜間スケジュール化して、あるファイルをコピーするBATを作成したいのです。 条件は (1)コピー元フォルダ C:TEST フォルダ以下に(2)~(4)のファイルがあります。 (2)コピー元ファイル名 AAABBB20101001.txt (3)コピー元ファイル名 AAABBB20101002.txt (4)コピー元ファイル名 AAABBB20101003.txt   **ファイル名の日付部分のみが可変です。 (5)コピー先 D:TESTBKK (6)コピー後ファイル名 AAABKK.txt (4)のみをコピーし(6)のファイルとして上書きコピーするbatを作成したいのです。 自分でも下記のbatを作成したみました。 @ECHO OFF SET LOGPATH=C:\test FORFILES /P %LOGPATH% /M AAA*.txt /C "cmd /c COPY /y C:\test D:\test\AAABKK.txt" /D 0 最新日付のみをコピーしたつもりが、すべてのファイルがAAABKK.txtに追加された 状態で出力されていました。どなたかアドバイスをお願いします。 他に違う作成方法があれば教えてください。