#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*
стол или Документы?