2017-12-27 346 views
0

行,所以我有我創建了一個簡單的批處理文件的人,基本算當前文件夾中的所有文件,然後創建3個文件夾,像這樣運行批處理文件

照片\ 2017_11_01 \ 3
照片\ 2017_11_01 \ 10張
照片\ 2017_11_01 \ 30

代碼如下

@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 ^自今年5月以來,他就像一個魅力一樣。麻煩是非常耗時的,必須每天或每週進行一次。然而,我沒有做了2個月,所以沒有我有近60個文件夾要經歷,這將需要我整天。

我的問題 這可以修改,以便我可以運行「照片」文件夾中的批處理文件,並讓它在每個子文件夾中遞歸運行。

我不想每天自動化它的原因有幾個。所以能夠同時在多個子文件夾中運行批處理文件將是一個巨大的改進。

+0

'recursively'的意思是:在每一個* *的根文件夾(包括子子文件夾下的文件夾,子子運行子文件夾等),這是你想要的?或者只是根文件夾中的每個文件夾(只有一步深)? – Stephan

+0

嗨對不起。所以我想將批處理文件放在「照片」根文件夾中,並讓它在每一個文件夾中深入一步(「2017_11_01」,「2017_11_02」等)。該腳本需要大約2分鐘運行如此理想的一個文件夾在一次(即時猜測,它將如何工作無論如何) –

回答

0

我建議使用你的工作腳本是和構建一個包裝:

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

酷我會給它一個去讓你知道結果 –

+0

好吧,所以我試了一下。我用我現有的腳本「folder_sort.bat」編輯「yourcurrentscript.bat」然後放置根文件夾並運行。這就是我get.C:\用戶\約翰\圖片\ IPTimelapse \測試> root_sort.bat 處理2017_11_06 「folder_sort.bat」不被識別爲內部或外部的命令, 運行的程序或批處理文件。 處理2017_11_07 'folder_sort.bat'不被識別爲內部或外部命令, –

+0

如果在每個子文件夾中存在「folder_sort.bat」,上述工作將會發生。 –