質問するログイン新規登録
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

329閲覧

BATで複数階層のファイルを一括処理した後削除したい

Seirious

総合スコア3

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/08/29 17:01

0

0

実現したいこと

batファイルを実行して複数階層のファイルを処理してそのファイルをその階層に保持したまま元のファイルを削除したい。

前提

フォルダA
| conv.bat
+---フォルダB
|    image1.webp
|    image2.webp
+---フォルダC
|    imageA.webp
|    imageB.webp
~略
上記のような構造の時にフォルダAでbatを実行した時にフォルダBとフォルダCのwebpを変換してかつその変換したファイルをフォルダBにあったものはフォルダBに、フォルダCにあったものはフォルダCに移動させたいです。
その後、不要となったファイルwebpを削除したいです。

発生している問題・エラーメッセージ

フォルダAにファイルが展開されてしまい今後同名ファイルがあった場合上書きされてしまい保持できなくなってしまう。

該当のソースコード

bat

1for /R "%~dp0" %%i in (*.webp) do ffmpeg -i "%%i" "%%~ni.jpg"

試したこと

ffmpegの挙動はffmpeg -i 入力ファイル [オプション](今回は必要としない) 出力ファイルとなっています。
ソースコードのbatの実行したところwebpの取得(2回目の%%i)では絶対パスで取得できており、最後の出力のところでフォルダ指定が無いのでbatと同じ階層にファイルを置いてしまっている(と思います。)

補足情報(FW/ツールのバージョンなど)

なるべく外部ツールは使用したくありません。個人的に書きやすい為batで書いていますがpowershellのps1でも構いません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/08/29 17:30

> 最後の出力のところでフォルダ指定が無いのでbatと同じ階層にファイルを置いてしまっている(と思います。) フォルダー名を書けば良いだけではないのでしょうか??問題点が見えません。
Seirious

2023/08/30 13:52

forで回してるのにフォルダー名を記入するんですか??そのフォルダに全てファイルが出力されて同名ファイルの場合上書きされてしまいすべてのファイルの保持が不可になってしまいませんか? 例えばwebpがtxt、jpgがlogだとします。その場合 for /R "%~dp0" %%i in (*.txt) do ren *.txt *.logで済みますがrenが現在どのディレクトリで実行されているのが分かりません。それを知りたいのです。
guest

回答1

0

ベストアンサー

フォルダー名の指定方法がわからないと言うことでしたか。

%~dp0とか%%~ni.jpgとか、お書きなのでそのあたりの構文は理解されている物とばかり思っていました。

ドライブ名・フォルダー名付きで変数%%iを展開するには、%%~dpni.jpgです。これで、%%iと同じフォルダーにjpgファイルが出来ます。

dがドライブ名、pがフォルダー名フルパスです。
元々お使いのnは拡張子を除いたファイル名ですが、nの意味を調べた時に他の文字を調べなかったのか?

詳しくは、コマンドプロンプトでfor /?と実行すると説明が出て来ます。

投稿2023/08/30 14:02

編集2023/08/30 14:03
otn

総合スコア86407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/08/30 15:21

もしかして、ffmpeg 固有の制約が何かあるのか?と覆って「問題点が見えません。」と書いたのですが、関係なかったみたいですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問