2015-05-30 2 views
0

Im пытается создать пакетный файл, который скопирует каталог в другой каталог, однако каталог, который я хочу скопировать, также имеет часть имени, случайно сгенерированного т.е. "jibberish.Directory1". есть ли способ сделать это?пакетный файл xcopy в частично неизвестный каталог с точкой (.) В

Я пытался что-то вроде:

XCOPY "%~dp0DATA\test" "%APPDATA%\Application1\Directory\*Directory1\" /E /C /R /I /K /Y 

но общий провал. Любая помощь будет принята с благодарностью :) Спасибо!

+0

Каков критерий для выбора этой папки назначения? Если вы используете подстановочные знаки, может быть более одного совпадения. Должен ли он быть недавно созданным или последним, или ...? – user1016274

+0

процесс создает 100 папок, структура имен папок - NAME.ID. ID легко, от 1 до 100 для всех 100 папок, но имя меняется. Мне нужно добавить каталог (содержащий настройки) ко всем папкам NAME.ID, но не нужно копировать имена, но может скопировать строку в excel или что-то еще и реплицировать все 100 восходящих чисел. Надеюсь, это поможет объяснить немного лучше – Raine

ответ

0

xcopy не поддерживает подстановочные знаки в именах каталогов. Поэтому для контура дополнительно необходимо для выполнения этой задачи, которая заключается в следующем:

В папке C:\Temp есть пакетный файл DuplicateFolder.bat на код ниже.

Папка для дублирования: DATA\test в каталоге командного файла.

C:\Temp\DATA\test содержит:

  • SubFolder1
    • FirstFile.txt
    • Второй File.txt
  • Sub Folder 2
    • ListFile.csv
  • Readme.txt

Все эти вложенные папки и файлы должны быть скопированы в каждый вложенную %APPDATA%\Application1\Directory заканчивающегося числа после точки.

%APPDATA%\Application1\Directory содержит, например:

  • Папка abc.1
  • Папка eg.2
  • Папка ч до k.3
  • Папка last.4
  • Папка не изменилась

Последняя папка должна быть проигнорированы, поскольку он не содержит точку и число в конце.

Результат должен быть, например, для первой вложенной Folder abc.1:

  • Папка ABC.1
    • SubFolder1
      • FirstFile.txt
      • Второй File.txt
    • Sub Folder 2
      • ListFile.csv
    • Readme.txt

Кодекс DuplicateFolder.bat является:

@echo off 
set "SourceFolder=%~dp0DATA\test" 
for /D %%F in ("%APPDATA%\Application1\Directory\*") do (
    if not "%%~xF" == "" %SystemRoot%\System32\xcopy.exe "%SourceFolder%" "%%~F" /E /C /Q /R /I /K /Y >nul 
) 
set "SourceFolder=" 

Этот пакетный файл просто проверяет, если имя папки содержит точку без проверки, если строка после запятой - «расширение файла» с привязкой %%~xF - действительно номер. Этот очень простой тест очень быстрый.

Для получения подробной информации о используемой команде для и объяснение параметров и специальных петли переменных ссылок открыть окно командной строки, выполнить for /? и чтение вывода справки для этой команды в окне консоли.

+0

Вы, сэр, герой! Это сработало отлично, я не знал, что вы не можете использовать подстановочные знаки с xcopy в том, как я пытался и не смотрел FOR. Вы действительно расширили мои знания и спасли меня многочасовыми неудачами, лаяв неправильное дерево. Спасибо, что нашли время, чтобы помочь с этим, я действительно ценю это^_ ^ – Raine

 Смежные вопросы

  • Нет связанных вопросов^_^