Пакетный файл: если я знаю, с какого имени папки начинается, но не с полного имени, как попасть в папку

#batch-file

#пакетный файл

Вопрос:

Я пытался создать пакетный файл для выполнения xcopy из одного места в другое, примерно для 50 папок.

допустим, папки называются так: Folder1: 1abc Folder2: 2qer Folder3: 3asd Folder4: 4jfd … и так далее. Я знаю, что имя папки начинается с цифры, поэтому я бы сделал что-то вроде

 :COPYDIAG
//The counter part in the XCOPY is what I don't get
XCOPY %counter%"Documents*.* OtherLocation
SET /A countDiag1  = 1
IF %countDiag1%==%endDiag1% (GOTO :EOF) ELSE (GOTO :COPYDIAG)
  

Итак, как мне получить строку для полного имени папки, если я знаю, что имя папки начинается с инкрементного числа?

Ответ №1:

Вы можете использовать CD с подстановочными знаками для выбора частичного имени каталога. CD 1* переместится в первую найденную папку, начиная с 1 . Затем сделайте свое дело и вернитесь на один уровень папки. Просто помните, что теперь вы находитесь в другой папке, поэтому вам может потребоваться компенсировать это в вашем XCopy заявлении.

 @Echo Off
Set Counter=0
Set EndCounter=3
:NextFolder
Set /A Counter=%Counter% 1
CD %Counter%*
XCopy Documents*.* ..OtherLocation
CD ..
If Not %Counter%==%EndCounter% Goto :NextFolder
  

Комментарии:

1. В качестве дополнительной подсказки я часто использую подстановочные знаки при попытке перейти к сложному пути. Вместо CD UsersUsernameDocumentsVisual Studio 2010ProjectsCompany.Product.FeaturebinRelease я использую CD UsersU*Doc**2010Pro**FeaturebinRel* . Очевидно, вы должны хорошо знать свои папки, чтобы убедиться, что нет путаницы. Рабочий D* стол или Документы?