Это было интересно, поэтому я попробовал:
@echo off
set "dir=C:\Your\Current\Directory"
set "ndir=C:\Your\New\Directory"
setlocal enabledelayedexpansion
for /d %%A in (%dir%\*) do (
pushd "%%A"
for /f %%B in ('dir /a-d-s-h /b ^| find /v /c ""') do (
set cnt=%%B
if "!cnt!" == "2" (if not exist "%ndir%\%%~nA" robocopy "%%A" "%ndir%\%%~nA" /e)
)
)
pause
Я продолжал сталкиваться с проблемами, поэтому я изменил несколько вещей, чтобы заставить его делать то, что я хотел;вероятно, есть более изящные способы сделать это, но это сработало ¯ \ _ (ツ) _ / ¯.Прежде всего, установите переменные для вашего текущего каталога (dir
) и вашего нового каталога (ndir
), чтобы потом было немного легче переваривать;нам также необходимо включить отложенное расширение, поскольку значение нашей счетной переменной (cnt
) будет меняться между циклами цикла.Первый цикл FOR
- это /d
, который будет проходить по папкам - мы устанавливаем каждую из этих папок в качестве параметра %%A
и используем его для изменения нашего каталога (используя pushd
) до запуска наших вложенных команд.
Второй цикл FOR
- это /f
, который будет циклически перебирать результаты команд - в данном случае это dir
и find
.Для dir
мы указываем /a
, чтобы показать все файлы, которые -d
не являются папками, -s
системными файлами или -h
скрытыми файлами, и мы выводим эти выходные данные в формате /b
bare.Используя вывод dir
, мы запускаем find
и указываем /v
отображать все непустые строки, а затем /c
подсчитываем число - которое становится параметром %%B
.
Наконец, мыустановите %%B
в качестве нашей счетной переменной (cnt
) - если !cnt!
равно 2
, мы увидим, существует ли папка в новом каталоге, и если она не будет выполнена, мы ее повторно скопируем.Команда перемещения доставляла мне некоторые неудобства, поскольку папка была бы заблокирована циклом, поэтому, если вы хотите, вы также можете добавить команду DEL
, чтобы удалить исходную папку.
Дайте мне знать, если это поможет!Надеюсь, ваше исследование в любом случае прошло успешно.
Ссылки: Подсчет файлов , ДЛЯ Looping , pushd , DIR , НАЙТИ , Робокопия