Я использовал этот скрипт для создания папок с использованием текстового файла. Как добавить подпапки?

for /f "tokens=* delims=," %d in (Panels.txt) do md %d

В настоящее время скрипт делает папки Panel-A; Панель-B и т.д. Для панели-Z.

Мне нужны подпапки undel каждой папки Panel- * под названием:

  • 2014_Products
  • 2013_Products

Новая структура папок будет:

  • Панель-A\2014_Products
  • Панель-A\2013_Products
  • Панельные-B\2014_Products
  • Панельные-B\2013_Products
  • ,
  • ,
  • Панельные-Z\2014_Products
  • Панельные-Z\2013_Products

Как добавить подпапки?

1 ответ1

0

Вы можете использовать PowerShell для этого. Я еще не тестировал приведенный ниже метод, но он должен работать.

  1. Создайте файл CSV в корне папки, с которой вы хотите начать.
    • Лучше всего использовать Excel или другой редактор электронных таблиц и CSV с разделителями-запятыми "Сохранить как".
    • Назовите файл FolderNames.csv
    • Сделайте два столбца с заголовками Name и Type
    • Поместите имя каждой папки Panel в столбец "Имя", а « Folder в столбец "Тип".
    • Поместите имя каждой папки "Продукты" (только один раз, а не для каждой комбинации «Панель / Продукты») в столбце "Имя" с Subfolder в столбце "Тип".
  2. Откройте новую консоль PowerShell.
  3. Перейдите в папку, содержащую FolderNames.csv
  4. Запустите следующую команду:

$Folders=Import-Csv FolderNames.csv;$Folders|?{$_.Type-eq'Folder'}|%{$ParentName=$_.Name;New-Item "$ParentName" -ItemType Directory;$Folders|?{$_.Type-eq'Subfolder'}|%{$ChildName=$_.Name;New-Item "$ParentName\$ChildName" -ItemType Directory}}

Приведенная выше команда на самом деле представляет собой сценарий, сжатый в несколько длинную строку. Вот расширенная и прокомментированная версия:

# Import FoldersNames.csv into a variable called $Folders
# This will create an array of objects which have the Name and Type properties as defined in the CSV.

$Folders=Import-Csv FolderNames.csv;

# Filter $Folders down to just objects with a Type value of 'Folder'.
# ? is a built-in alias for Where-Object.

$Folders|?{$_.Type-eq'Folder'}|

# Send the filtered objects into a ForEach-Object loop.
# % is a built-in alias for ForEach-Object.
%{
    # Store the current object's Name in $ParentName.

    $ParentName=$_.Name;

    # Create a new directory named $ParentName.

    New-Item "$ParentName" -ItemType Directory;

    # Filter $Folders down to just objects with a Type value of 'Subfolder'.

    $Folders|?{$_.Type-eq'Subfolder'}|

    # Send the filtered objects into a ForEach-Object loop.
    %{
        # Store the current object's Name in $ChildName.

        $ChildName=$_.Name;

        # Create a new subfolder in $ParentName called $ChildName.

        New-Item "$ParentName\$ChildName" -ItemType Directory
    }
}

Обратите внимание, что это решение не очень масштабируемо как есть. Если вам нужно создать более глубокие слои подпапок или поместить разные подпапки в определенные папки в зависимости от их имени, адаптировать этот сценарий к вашим потребностям будет непросто. Однако это должно служить цели, изложенной в вашем вопросе.

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