Ссылка на содержимое шаблона в качестве переменной в командном файле. - PullRequest
0 голосов
/ 15 февраля 2012

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

Например, у меня есть такая структура каталогов:

  • C: /
    • FolderA
      • File1.xyz
      • File2.xyz
    • FolderB
      • File3.xyz

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

File1.xyz копируется в D: /FolderA/File1/File1.xyz

File2.xyz копируется в D: /FolderA/File2/File2.xyz

File3.xyz копируется в D: /FolderB/File3/File3.xyz

Я знаю, что это возможно при использовании цикла FOR в пакетном файле, но я не знаю, как взять текст, замененный подстановочным знаком, и использовать его в качестве переменной (поэтому я могу создать папку с то же имя.)

1 Ответ

1 голос
/ 15 февраля 2012
for /R C:\ %%f in (*.xyz) do (
   if not exist D:%%~Pf%%~Nf md D:%%~Pf%%~Nf
   copy %%f D:%%~Pf%%~Nf/%%~NXf
)

Модификаторы переменных FOR дают необходимую информацию:

%%~D Expands to a Drive letter only.
%%~P Expands to a Path only, including an ending backslash.
%%~N Expands to the Name only.
%%~X Expands to the eXtension only.

Тип FOR /? для дальнейших деталей.

Возможно, вам сначала нужно скопировать структуру каталогов с помощью:

XCOPY C:\ D:\ /T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...