2017-12-27 374 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”,上述工作将会发生。 –