1

Я перепробовал кучу вещей и много исследований, но ничто из того, что я пробовал, не сделало то, что мне нужно.

Я пытаюсь попытаться создать структуру папок из нескольких папок в другой папке. Имена папок разделяются запятыми в цикле пакетного сценария.

Теперь мне нужно создать еще одну кучу подпапок, но мне нужно, чтобы они находились ниже подпапки первого уровня, созданной другим списком, разделенным именами папок запятых.

Пример структуры папок

 - Main folder
   - Sub folder A
      - Sub folder 1
      - Sub folder 2
      - Sub folder 3
      - Sub folder 4 
   - Sub folder B
      - Sub folder 1
      - Sub folder 2
      - Sub folder 3
      - Sub folder 4 
   - Sub folder C
      - Sub folder 1
      - Sub folder 2
      - Sub folder 3
      - Sub folder 4

Мне удалось создать все "основные" подпапки A,B,C но мне не повезло в создании подпапок 1,2,3.. из новой кучи под первой кучей подпапок создать как A,B,C

for %%x in (A,B,C) do md %%x

3 ответа3

2

Вы можете создать переменную с набором A,B,C , создать другую переменную с набором 1,2,3,4 , а затем поместить каждый набор во вложенный цикл FOR и итерировать каждое значение переменной соответственно из каждого набора, чтобы получить A1, A2, A3, B1, B2, B3 и т.д., Обеспечивающие повторение каждой комбинации.

Вы просто используете команду MD, чтобы создать комбинации каталогов, добавленные в корневой каталог, где будут находиться основные подпапки из набора группы A, разделенные запятыми.

Пример скрипта

Обязательно установите значение RootDir= в качестве полного пути к родительской папке, которая будет содержать папки со списком группы A, которые установлены как переменная SubA= .

@ECHO ON
SET RootDir=C:\Main
SET SubA=A,B,C,D,E
SET SubB=1,2,3,4,5
FOR %%A IN (%SubA%) DO FOR %%B IN (%SubB%) DO IF NOT EXIST "%RootDir%\%%~A\%%~B" MD "%RootDir%\%%~A\%%~B"
EXIT

Дополнительные ресурсы

0

Учитывая расположение, например:

Main Folder 
     Sub Folder A
        Sub Folder 1
        [...]
        Sub Folder 4
     Sub Folder B 
        Sub folder 1 
        [...]
        Sub Folder 4 
     [...]

Самый простой ответ (даже если это довольно утомительно и грубо) - просто выписать строки mkdir для каждой последней подпапки:

mkdir "Main Folder\Sub Folder A\Sub Folder 1"
mkdir "Main Folder\Sub Folder A\Sub Folder 2"
mkdir "Main Folder\Sub Folder A\Sub Folder 3"
mkdir "Main Folder\Sub Folder A\Sub Folder 4"

Повторите это столько раз, сколько вам нужно, и просто измените имена папок.

Если каталог изначально не существует, он будет создан. Если он существует, в нем будет создана папка. Итак, самая первая строка:

mkdir "Main Folder\Sub Folder A\Sub Folder 1"

создаст все три показанные папки, тогда как эта строка:

mkdir "Main Folder\Sub Folder Z\Sub Folder 1"

создает только 2-ю и 3-ю папку (так как Main Folder уже существует).

Как вы указали, вам нужны специальные символы (пробелы и запятые), вам нужно заключить каждую команду в кавычки (как показано). Для папок без каких-либо специальных символов (например, Folder1\Folder2 ) кавычки не нужны.

Я не включил буквы дисков, так как я предполагаю, что файл .bat будет находиться в том же каталоге, где вы хотите создать Main Folder и ее подпапки.

0

PowerShell может сделать это.

$root = "\\*\folderA"

ForEach ($dir in (Get-Item -Path "$root\*\" | ?{$_.PSIsContainer})){

If (!(Test-Path -Path "\*\FolderA")) {

    New-Item -Path "$root\*\" -Name "Folder1" -ItemType Directory | Out-Null

}

}

Просто повторите New-Item -Path "$root\*\" -Name "Folder1" -ItemType Directory | Out-Null Часть Out-Null для каждой подпапки

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .