在所有子文件夹中运行批处理文件

时间:2017-12-27 12:21:47

标签: batch-file cmd subdirectory

好吧所以我有一个简单的批处理文件,有人为我创建基本上计算当前文件夹中的所有文件,然后创建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  

将文件从当前文件夹复制到新创建的文件夹中,并且自今年5月起就像魅力一样工作。麻烦是非常耗时的,必须每天或每周这样做。但是我没有做2个月所以没有我有近60个文件夹可以通过,这将花费我一整天。

我的问题 可以修改它,以便我可以在"照片"中运行批处理文件。文件夹并以递归方式在每个子文件夹中运行。

由于某些原因,我不想每天自动化它。因此,能够立即在多个子文件夹中运行批处理文件将是一个巨大的进步。

1 个答案:

答案 0 :(得分:0)

我建议你按原样使用你的工作脚本并构建一个包装器:

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