2017-05-10 13 views
0

これで初めてです。バッチファイルを使用してn番目のファイルを新しいディレクトリにコピーし、複数のパスを渡す

OK IPCAMを使用してタイムラプスビデオを撮っている人もいます。私は夕暮れから夜明けまで15/20秒ごとに写真を撮ります。各フォルダには、私はまた、3は独立したいと思い、現在3750

、たくさんのファイルを使用して、日ごとにすべてのファイルを使用したタイムラプスビデオを作る

などなど、それぞれ毎日日付で標識されています設定された数の画像を使用する時間経過ビデオを生成する。

方程式は

(総ファイル)/(25 FPS)/(3秒長い)をスキップする

例に

25分の3750/3 = 50ファイルをスキップするためにどのように多くのファイル=です

だから私は、これは、作成した瞬間

mkdir "3" 

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

:p 
    set /a Counter+=1 
    set /a X=Counter %% "50" 
    if %X%==0 copy %1 "3" 

goto :eof 

でこのコードを使用していますディレクトリ "3"を作成し、50番目のファイルをそのフォルダにコピーします。その後、私はフォルダ内のファイルを使用してタイムラプスビデオを作ることができます。

次に、バッチファイルを10秒間編集して30枚の画像を編集し、それぞれ別々に実行する必要があります。

どのように1つのバッチファイルにすべての行を追加することができますので、毎回1つのファイルを編集するだけですか?

mkdir "10" 

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

:p 
    set /a Counter+=1 
    set /a X=Counter %% "15" 
    if %X%==0 copy %1 "10" 

goto :eof 

&

mkdir "30" 

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

:p 
    set /a Counter+=1 
    set /a X=Counter %% "125" 
    if %X%==0 copy %1 "30" 

goto :eof 

ホープザッツ感覚のいくつかの並べ替えを行います。歓声

答えて

0

また、ファイルを数えて計算するためにバッチを使用します。

@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 

編集は30個のjpgのを格納するフォルダ30を変更しました。

+0

は、これは非常によく動作します(未テスト)の計算 – LotPings

+0

を含めるようにバッチを編集します。ちょうど私が必要とした。上記のリンクを使用して計算を自動化してください。 –

+0

ありがとうございます、これは私が想像していたよりもうまく機能しています。 3と10の両方が表示されます フォルダ「30」は、30秒のクリップではなく、実際には30枚のオリジナル写真です。私はそれを自分で修正しようとしましたが、私はどこにもいません。 25で割るのではなく、秒で割ります。それだけで30に分割する必要があります。 その特定のフォルダに30ファイルを保存し、そのまま3と10のフォルダを保持することが可能だと思いますか? もう一度ありがとうございます。これでどれくらいの時間を節約できますか –

0

作成する各ディレクトリの秒数とスキップするファイルの数を入力する必要がある場合は、このようなことを試すことができます。 (バッチファイルはJPGファイルと同じディレクトリに配置されており、カレントディレクトリも同様に、このディレクトリに設定されていると仮定。)

@echo off 

:MainLoop { 
    cls 

    setlocal enabledelayedexpansion 
    set fileCount=0 
    set /p "duration=Seconds: " 
    set /p "interval=Files to skip: " 

    mkdir "%duration%" 

    for %%f in (*.jpg) do (
    set /a fileCount+=1 
    set /a frame=fileCount%%interval 
    if !frame! == 0 (
     copy "%%f" "%duration%" 
    ) 
) 
    pause 
    endlocal 
    goto :MainLoop 
} 

スキップするファイルの数が数を取得することによって計算することができカレントディレクトリにあるJPGファイルを毎秒のフレーム数(スクリプト内の定数変数として定義することができます)とユーザーが入力した秒数で割ったものです。あなたの最後の例の "125"がオフに見えたので、私はこれがあなたの望むものかどうかは分かりませんでした。

dbenhamすることにより、以下の答えはディレクトリ内の数のファイルを入手する方法を示しています。https://stackoverflow.com/a/11005300/7107236

+0

ありがとう、私は素晴らしいファイルも計算することについて尋ねるつもりだった。 3秒のクリップと10秒のクリップがあり、最後の「30」はクリップではありませんが、その日から30個のオリジナルファイルを保存したいので、フォルダ内の残りのファイルを削除してスペースを節約できます。現在、10ギガビット/日程度が近づいています。小さなクリップを保存して30枚の写真だけがこれを劇的にカットします。一ヶ月/一年が過ぎると、私は30枚のオリジナルから1ヶ月/ 1年のピッキングをタイムアウトすることができます –

関連する問題