2017-12-27 34 views
0

[OK]を私は私のために作成した簡単なバッチファイル誰かが基本的に現在のフォルダ内のすべてのファイルをカウントし、その後2017_11_01 \そう実行バッチファイル

写真2017_11_01 \ 3
\写真のように3つのフォルダを作成する必要がありますので、 \

@echo off 
:: get total number of files 
for /f %%A in ('dir /b *.jpg ^| find /v /c ""') do set /A total=%%A 

:: create subfolders and calculate skip 
for %%A in (3 10 30) Do (
    mkdir "%%A" 
    if %%A neq 30 (
    Set /A "skip%%A=total/25/%%A 
) Else (
    Set /A "skip%%A=total/%%A 
) 
) 

set Counter=0 
for %%f in (*.jpg) do call :p "%%f" 
goto :EOF 

:p 
set /a "Counter+=1,X=Counter%%skip3,Y=Counter%%skip10,Z=Counter%%skip30" 
if %X%==0 copy %1 "3" 
if %Y%==0 copy %1 "10" 
if %Z%==0 copy %1 "30" 
goto :eof 

新たに作成したフォルダに現在のフォルダからファイルをコピーしますであり、Wがありますが、次のように2017_11_01

30 \コード\ 10枚の
写真があります今年5月から魅力的なものになった。トラブルは非常に時間がかかり、毎日または毎週これを行う必要があります。しかし、私は2ヶ月間それを行っていないので、私は一日中私を連れていくことになる60のフォルダがあります。

私の質問 "Photos"フォルダ内のバッチファイルを実行して各サブフォルダ内で再帰的に実行できるように、これを変更できますか?

私はいくつかの理由で毎日自動化したくありません。一度に複数のサブフォルダでバッチファイルを実行できるようになると、大幅に改善されます。私はあるとラッパーを構築する作業スクリプトを使用することをお勧めし

+0

'recursively'は意味:*すべての*サブ・サブ・フォルダを含むルートフォルダ(以下、フォルダ、サブサブでそれを実行します - サブフォルダなど)、それはあなたが欲しいものですか?または、ルートフォルダ内のすべてのフォルダ(1ステップだけ)? – Stephan

+0

こんにちは申し訳ありません。だから私は、 "写真"のルートフォルダにバッチファイルを配置し、すべてのフォルダ( "2017_11_01"、 "2017_11_02"など)のすべてのフォルダで実行したいと思います。スクリプトは一度に理想的には1つのフォルダを実行するのに約2分かかっています(とにかく動作すると思います) –

答えて

0

は:

@echo off 
for /d %%a in (20*) do (
    echo processing %%a 
    pushd "%%a" 
    call "%~dp0yourcurrentscript.bat" 
    popd 
) 
+0

クール私はそれを行って結果を知ってもらうでしょう –

+0

OK、それを試しました。私は既存のスクリプト "folder_sort.bat"で "yourcurrentscript.bat"を編集してから、ルートフォルダとrunの両方を配置しました。これは私が得るものです.C:\ Users \ John \ Pictures \ IPTimelapse \ test> root_sort.bat 処理2017_11_06 'folder_sort.bat'は、内部または外部のコマンド 操作可能なプログラムまたはバッチファイルとして認識されません。 処理2017_11_07 'folder_sort.bat'が内部または外部のコマンドとして認識されない –

+0

"folder_sort.bat"が各サブフォルダに存在する場合、上記の動作をします。 –

関連する問題