• ベストアンサー

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

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

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

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

「1行に 1個ずつファイル名が書いてある」として, 「フルパスだと長いのでパスを消してファイル名と拡張子だけにしたい」ということ? だとしたら for /F "delims=" %f in (ファイル) do @echo %~nxf でできるような気がする. あ, バッチファイル (スクリプト) の中で使うなら for /F "delims=" %%f in (ファイル) do @echo %%~nxf のように %% とする必要があります.

gonxyz
質問者

お礼

大変ありがとうございました。 結果をテキストファイルのは自己解決しました。 ただhelp forをみても自分には意味が分かりませんでした。

gonxyz
質問者

補足

Tacosanさんありがとうございます。 ほぼ完璧です! あと、結果をテキストファイルにするには、 どうすればよろしいでしょうか? すみませんが、delimsとか~nxfの意味も教えて頂けませんか?

その他の回答 (6)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.7

>すみませんが、delimsとか~nxfの意味も教えて頂けませんか? C:\> help for

gonxyz
質問者

お礼

koko_u_さん 大変ありがとうございました。 結果をテキストファイルのは自己解決しました。 ただhelp forをみても自分には意味が分かりませんでした。 今回はTacosanさんのを使わせて頂きました。

  • HowOver
  • ベストアンサー率30% (17/56)
回答No.5

別案こっちの方がよさそうですけど text3.txtの出来るタイミングがなんかおかしい。 dir *.zip /w /a:-d /s /o:g > test1.txt findstr /v "^$" test1.txt > test2.txt findstr /v /r /c:"^ ." test2.txt > text3.txt

gonxyz
質問者

お礼

HowOverさん 大変ありがとうございました。 今回はTacosanさんのを使わせて頂きました。

  • HowOver
  • ベストアンサー率30% (17/56)
回答No.4

こんなところが限界 dir c:\*.zip /w /a:-d /s /o:g > test1.txt find /v " 個のファイル" test1.txt > test2.txt find /v " 個のディレクトリ" test2.txt > test3.txt find /v " のディレクトリ" test3.txt > test4.txt find /v "" test4.txt > test5.txt findstr /v "^$" test5.txt > test6.txt 気に入らないところは研鑽してください。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.3

>1.パソコン内の、特定の拡張子(jtd、xls等)で検索してテキストに出力します。 >2.そのテキストのフルパス名を頼りに特定のファイルのみを削除します。 >(ファイル名では絞れないため) >3.結果を印刷したいのですが、用紙削減のためフルパス名を削除したいのです。 2番は出力されたテキストファイルをテキストエディタか何かで開いて目で見て削除しているのですか? であれば、その後エディタの置換機能でファイル名だけ残せばよいように思いますが。

gonxyz
質問者

補足

そうです、メモ帳でやってみたけどうまくいきませんでした。 置換で「*\→空白」とやったけど出来ませんでした。 それに、パソコンが分からない人にも使えるようにしたいのです。

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

確か for /r C: %%f in (*.zip) do @echo %%f でもドライブ文字とディレクトリが付いちゃったような気がします>#1. for /r C: %%f in (*.zip) do @echo %%~nxf でしょうか.

gonxyz
質問者

補足

補足します 1.パソコン内の、特定の拡張子(jtd、xls等)で検索してテキストに出力します。 2.そのテキストのフルパス名を頼りに特定のファイルのみを削除します。(ファイル名では絞れないため) 3.結果を印刷したいのですが、用紙削減のためフルパス名を削除したいのです。(ファイル名はダブっても可) 2番までは出来たのですが、3番のフルパス名を削除が分かりません(><) 初心者なので出来るだけ、わかりやすく教えていただけると助かります。 koko_u_さんTacosan素早い回答ありがとうございます。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

ファイル名だけ欲しいなら for ループでまわしておけばいいのでは? for /r C: %%f in (*.zip) do echo %%f のような感じで

gonxyz
質問者

補足

補足します 1.パソコン内の、特定の拡張子(jtd、xls等)で検索してテキストに出力します。 2.そのテキストのフルパス名を頼りに特定のファイルのみを削除します。(ファイル名では絞れないため) 3.結果を印刷したいのですが、用紙削減のためフルパス名を削除したいのです。(ファイル名はダブっても可) 2番までは出来たのですが、3番のフルパス名を削除が分かりません(><) 初心者なので出来るだけ、わかりやすく教えていただけると助かります。 koko_u_さん素早い回答ありがとうございます。

関連するQ&A