2017-06-07 11 views
0

私はWindowsで作業しています。私は多くのjpgファイルをディレクトリのサブディレクトリに持っています。私はディレクトリのアーキテクチャを正確には知らないので、サブディレクトリにいくつのレベルがあるか分かりません。私がする必要があるのは、ファイルのパスに従ってjpgファイルを処理することです。次に例を示します。
Windows bat:ディレクトリ内のファイルをループする

dir 
|---sub dir1 
|  |-----sub dir11 
|    |-----a.jpg 
|    |-----b.jpg 
|---sub dir2 
     |-----c.jpg 
     |-----d.jpg 

だから私は以下のようにコマンドを実行する必要があります。

process.bat C:\dir\sub dir1\sub dir11\a.jpg C:\dir\sub dir1\sub dir11\b.jpg 
process.bat C:\dir\sub dir2\c.jpg C:\dir\sub dir2\d.jpg 

私は、このようなbatファイルを作成する方法、特にバットの処理経路を知らないスペースが含まれています。スペースが問題を起こすかどうかはわかりません。

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

For /d %%A in (C:\dir\*) Do (
    Set "Files=" 
    For /f %%B in ("%%~fA\*.jpg") Do Set Files=!Files! "%%~fB" 
    If defined Files echo process.bat %%~fA\*.jpg 
) 

pause 

私は、スクリプトを実行すると、私は以下のような結果を得る:

process.bat C:\dir\sub dir1\*.jpg 
process.bat C:\dir\sub dir2\*.jpg 

それはと思われる、私は以下のように試してみたが、それは動作しません

*は通常の文字と見なされます。

答えて

1
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 

For /d %%A in (C:\dir\*) Do (
    Set "Files=" 
    For /F "delims=" %%B in ('dir /S /B "%%~fA\*.jpg"') Do Set Files=!Files! "%%~fB" 
    If defined Files echo process.bat !Files! 
) 

pause 
0
If defined Files echo process.bat !files! 

が問題を解決するはずですが、process.batが協調するかどうかは未定です。必要に応じてprocess.batを記載する必要があります。

+0

変更してみてください。パス内のスペースが別の問題を引き起こすことを除いて、動作するようです。今度はそのような結果が得られます: 'process.bat C:\ dir \ sub process.bat C:\ dir \ sub' – Yves

+0

パス内のすべてのスペースを削除してもまだ動作しません。私はこれを持っています: 'process.bat C:\ dir \ subdir1 \ *。jpg process.bat C:\ dir \ subdir2 \ *。jpg' – Yves

+0

問題は解決しました。私は別の答えを述べる。 – Yves

関連する問題