プロが教える店舗&オフィスのセキュリティ対策術

下記の事を実現できる方法をお教え下さい。

(1)ファイルから複数の文字列を取得
(2)取得した文字列を基にファイルを削除

(1)の文字列はファイル名を取得します。

または、2つのディレクトリで共通のファイルを
削除する場合の方法でも結構です。

よろしくお願いします。

A 回答 (3件)

こんばんは。



#2の補足に対してお答え致します。

> ファイルの中身は単純にファイル名のみです。パスは記述しません。
この場合は、先にカレントディレクトリを対象ファイルが有る場所まで
移動しておけばOKです。

逆に対象パスが固定(例として E:\CSVDATA\ とすると)なら

for /f "tokens=*" %f in (del_list.txt) do del /q E:\CSVDATA\"%f"

のように書いても行けると思います。

先にカレントディレクトリを移動させるなら

cd /d E:\CSVDATA\
for /f "tokens=*" %f in (del_list.txt) do del /q "%f"

の2段階になります。
但し、この場合は del_list.txt の側を見失わないようにパス付きで
書く必要が有るかも知れません。



> あと、終了を示す「*」なども存在しません。
これは、私が書いた例の
≫ C:\TEMP\MYTMP\*
について言ってます?

この書き方は『ワイルドカード』と言って、この例なら C:\TEMP\MYTMP\
の下に有るファイル全部、という意味です。
色々応用が有って、「*.csv」と書けば拡張子「csv」のファイルを全て
という意味になります。

コマンドライン上で使える標準書式なので、覚えておくと後々便利ですよ。

この回答への補足

回答ありがとうございます。

お教え頂いたことを試しましたが、うまく行きません。
「指定した名前は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されません。」というエラーになってしまいます。

原因が分からないので詰まってしまいました。またファイルのデリミタは改行ですがそれはOKなんでしょうか?
(試しに/fとオプションを外してみました。すると「in(ファイル名)の使い方が誤っています」と出力されました。)
また、tokensの使い方もhelpをみましたがいまいち分かりません。

度々で申し訳ありませんがお教え願えますでしょうか。

補足日時:2003/09/18 10:23
    • good
    • 0
この回答へのお礼

すみません。補足を出しましたが実現できました。
度々の回答ありがとうございました。

お礼日時:2003/09/18 11:33

こんばんは。



FOR 文を使うことでコマンドラインでもバッチファイルでも実現
できます。

例えば読み込むファイル名を del_list.txt とした場合、
del_list.txt の中には

C:\TEMP\~DF5CDE.tmp
C:\TEMP\~DF6684.tmp
D:\WORK\DUMMY.DAT
C:\TEMP\MYTMP\*
 ・・・・・・

のように削除対象ファイル名をフルパス表記で列挙しておきます。
ファイル名部分はワイルドカードでも可です。

そして、コマンドラインなら

for /f "tokens=*" %f in (del_list.txt) do del /q "%f"

バッチファイル中での処理なら

for /f "tokens=*" %%f in (del_list.txt) do del /q "%%f"

やりたい事合ってます?

この回答への補足

回答ありがとうございます。

やりたいことは合ってます。
ファイルの中身は単純にファイル名のみです。パスは記述しません。

20030917.csv
20030918.csv
20030920.csv

という感じです。
このファイル名と同じファイルを削除したいです。
あと、終了を示す「*」なども存在しません。
こんな感じの実現はできるのでしょうか?

補足日時:2003/09/17 22:17
    • good
    • 0

1,dir


2,del
*を使ったワイルドカードの利用も便利です。
拡張子はお分かりになりますね。
わからなければ再質問してください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

単体のコマンドなら知っているんが、ちょっと処理を加えたいときが難しいです。
また、delを使って試行錯誤していたときに、パイプでファイル名を渡そうとしたのですが、うまく行きませんでした。delにはパイプが不可なんでしょうかね。

ありがとうございました。

お礼日時:2003/09/17 22:43

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