Как динамически создать папку в командном файле - CMD - PullRequest
0 голосов
/ 20 октября 2019

У меня есть исходная папка, которая содержит много-много папок, которые названы так:

enter image description here

По сути, я пытаюсь создатьновые, пустые папки с этими точными именами.

Это можно сделать двумя способами:

  1. Даты находятся на расстоянии ровно 7 дней, поэтому код может динамически создавать папкис учетом даты начала.

или

Прокрутите исходную папку и создайте новую пустую папку с таким именем в моей целевой папке.

Я никогда не писал командный файл. Я смог пройти этот путь, перечислив каталоги, хотя:

@echo

setlocal

FOR /D %%G in ("*") DO echo We found %%~nxG

endlocal

Кто-нибудь знает, как взять имя, найденное в операторе FOR, и создать папку в определенном каталоге?

Спасибо! Синтаксис здесь, конечно, отличается!

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Другой способ, если вы хотите использовать PowerShell. Работает точно так же на Mac и Linux.

Get-ChildItem -Directory -Path './srcdir' | ForEach-Object { Copy-Item -Path $_.FullName -Destination './destdir' }
1 голос
/ 20 октября 2019

Я бы предложил более простой метод, включающий :

RoboCopy "SourceDir" "TargetDir" /E /Lev:2 /Create /XF *>NUL

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

Вы можете использовать просто . для текущего каталога, если он является источником или целью.


Для информацииДля этого, используя метод из вашего вопроса, вам просто нужно использовать команду M ake D irectory, MkDir | MD:
For /D %%A In ("SourceDir\*")Do MD "TargetDir\%%~nxA"

Если текущим каталогом является либо SourceDir, либо TargetDir, вы можете удалить его и завершить его обратной косой чертой.

...