Vba переместить файл в другую папку

Обновлено: 02.07.2024

Одной из важнейших составляющих любого языка программирования является способность считывать и записывать информацию из файлов. Стандартно это называется функциями низкого уровня (Low Level) и в полном объеме представлено в VBA. Кстати, именно эта особенность и является основой опасности макросов.

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

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

P.S.! Завершение переработки материалов разработчика приводит к совершенно неутешительным выводам. Материала по этой теме всегда было очень мало, да и качество оставляло желать лучшего. Теперь же он стал «обструганным» под непонятный стандарт, разорванным в несвязанное словоизвержение и напичканным примерами, половина из которых только запутывает ситуацию, а вторая — ничего не иллюстрирует. Ну, или почти так.

Работа с файлами, дисками и папками, путь

Логика изложения основана на том, что можно сделать с существующими объектами, а уже потом — как создать новый. Поскольку многие команды распространяются не только на работу с каталогами, но и на файлы, полное изложение приводится именно здесь.

Все, перечисленное здесь, не имеет прямого отношения к низкоуровневым функциям, но без этой информации работать нельзя в принципе.

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

CurDir

Определение текущей папки.

Из синтаксиса можно понять (или нет) достаточно многое.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Перечисленное не дает однозначного ответа на возникающие вопросы, но является основой для таковых. Частичные решения есть в разделе Примеры.

ChDrive

Инструкция для смены текущего диска (ChDrive) работает довольно примитивно. Так, вариант

определит текущим диском диск «D:». Из примера видно, что приводится только литерал, без двоеточия.

ChDir

Изменяет текущий каталог или текущую папку

Внимание! Изменяется текущая папка на указываемом диске, а не сам диск. Для смены диска потребуется команда ChDrive.

В значении пути можно использовать обозначения относительного перемещения. Например,

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Функция возвращает строку (String) с именем обнаруженных на диске файла, папки или подпапки. Если объект файловой системы обнаружен не будет, возвратится пустая строка.

В имени можно использовать знаки подстановки маски файла (* и ?).

Передача в качестве аргумента пустой строки возвращает список всех файлов и папок.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Атрибуты (копия из справки)

КонстантаЗначениеОписание
vbNormal0 Файлы без атрибутов (Значение по умолчанию.)
vbReadOnly1В дополнение к файлам без атрибутов определяет файлы, доступные только для чтения
vbHidden2В дополнение к файлам без атрибутов определяет скрытые файлы
vbSystem4В дополнение к файлам без атрибутов определяет системные файлы
vbVolume8Определяет метку тома, то есть имя логического диска (не букву!). Если указан какой-либо другой атрибут, параметр vbVolume игнорируется
vbDirectory16В дополнение к файлам без атрибутов определяет каталоги (папки)

Из контекста описания понятно, что атрибуты могут суммироваться.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Оператор Name переименовывает файл или папку и/или перемещает их в новое место.

Name <oldpathname> As <newpathname>

  • Обрабатываются только уже существующие объекты.
  • Файл может быть перемещен на другой диск.
  • Файлы, открытые низкоуровневыми процедурами, надо предварительно закрыть.
  • Перемещение папок и подпапок возможно только в пределах логического диска.

MkDir

Создает новый каталог или папку.

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

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

RmDir

Удаляет существующую директорию или папку.

Невозможно удалить папку, содержащую файлы, так что следует вначале удалить их, используя команду Kill. Также этой командой нельзя удалить файл.

Удаляет файлы с диска.

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

В имени можно использовать знаки подстановки маски файла (* и ?).

Так как команда удаляет только файлы, для удаления папок следует воспользоваться командой RmDir.

SetAttr

Устанавливает атрибуты файла.

SetAttr <имя файла>, <атрибуты>

Оба параметра являются обязательными. Имя файла может содержать путь.

Нельзя изменять атрибуты у открытых файлов!

Атрибуты:

КонстантаЗначениеОписание
vbNormal0Без атрибутов (по умолчанию)
vbReadOnly1Только для чтения (Read-only)
vbHidden2Скрытый файл (Hidden)
vbSystem4Системный файл (System)
vbArchive32Файл изменен после последнего резервного копирования

Атрибуты при указании могут суммироваться.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Низкоуровневые функции

Рассуждая здраво, практически невозможно сформировать однозначную последовательность изложения, так как тогда мы упремся в проблему яйца и курицы. Даже понимание того, что прежде чем считывать файл, он должен быть создан не очень помогает: чтение выполняется намного чаще.

Идентификатор файла

Его должен задать программист, но делать это вручную допустимо только для простых ситуаций. Лучше воспользоваться следующей функцией

где RangeNumber — 0 (1–255) или 2 (256–511).

Простейший вариант обращения (запроса) к функции выглядит так:

Далее по тексту будет использоваться именно выделенная красным переменная, содержащая получаемый ID (для упрощения записи). Если не будет заявлено другое или использовано явное указание.

Открывает файл для операций ввода/вывода (input/output, I/O).

Если указываемый на запись файл отсутствует, то он будет создан. Естественно, попытка чтения несуществующего файла закончится ошибкой (см. Dir).

Описание команды упрощено!

После завершения работы файл должен быть закрыт. Иначе какой-либо доступ к нему может быть заблокирован (в примитивном понимании и без дополнительного обсуждения). Для этого используется следующая команда:

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

Reset

Закрывает все файлы, открытые с помощью оператора Open, записывая содержимое их буферов на диск.

По существу, дублирует команду Close без атрибутов.

Чтение и запись

  • Последовательный (Sequential) доступ (режимы Input, Output и Append) используется для записи в текстовые файлы, например, журналы ошибок и отчеты.
  • Прямой или произвольный доступ (Random) используется для считывания и записи данных в файле без его закрытия. Файлы с прямым доступом сохраняются данные в записях, что ускоряет нахождение требуемой информации.
  • Двоичный доступ (режим Binary) используется для считывания или записи любого байта в файле, например, при сохранении или отображении растрового рисунка.

Записывает данные в последовательный файл в структурированном виде.

Необязательный параметр OutputList представляет одно или несколько числовых, или строковых выражений через запятую, которые нужно записать в файл. В переводе на обыденный язык, каждая строка подобного результирующего файла является перечнем значений с разделителем, каждое из которых записано по строгим правилам. Фактически мы получаем известный большинству CSV-файл. Чтобы не возникало неожиданностей при считывании, следует очень четко придерживаться правил.

Отсутствие OutputList (запятая в команде остается!) приводит к записи пустой строки.

В подобном файле крайне удобно хранить настройки для работы проекта, которые пользователь может изменить в соответствии со своими потребностями. Для передачи подобных макросов на сторону следует предусматривать (встраивать) возможности восстановления файлов, если пользователь их удалит или отредактирует вручную.

С другой стороны, набор множества таких строк представляет собой своего рода таблицу базы данных.

Записывает отформатированные данные в последовательный файл.

OutputList — выражение или список выражений, которые необходимо вывести.

Его синтаксис

С учетом специфического применения оператора, детали его действия опущены.

Параметр n указывает, сколько пробелов будет возвращено. При переполнении строки, излишек переходит на следующую.

Если не умничать, то функция будет работать только с моноширинным шрифтом.

Вставляет табулятор. Если параметр не указан, печать смещается к следующей позиции (шаг равен 14 символам). Наличие параметра перемещает к позиции с указанным номером. А если она уже была, то на эту позицию, но следующей строки.

Если значение width равно 0, длина строки является неограниченной. Оно используется по умолчанию.

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

Параметр VarList представляет собой перечисленный список переменных, в которые сохраняются считываемые данные.

Считывает одну строку из открытого последовательного файла и присваивает ее переменной типа String или Variant.

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

Считывает данные из открытого файла на диске в переменную.

Необязательный параметр RecNumber типа Variant (Long) указывает на номер записи (для файлов, открытых в режиме Random) или байтовое число (для файлов, открытых в режиме Binary), с которого начинается считывание. При его отсутствии, запятая сохраняется Результат сохраняется в переменную VarName.

Записывает данные из переменной в файл на диске.

  1. Параметр Len, задаваемый при открытии файла, играет ключевую роль. Во-первых, длина записи не может его превышать. Во-вторых, если запись меньше, то она дополняется пробелами до размера Len.
  2. Если записываемая переменная является строкой переменной длины, оператор Put записывает 2-байтовый дескриптор c длиной строки, а затем переменную. То есть длина записи, указанная предложением Len в операторе Open, должна быть по крайней мере на 2 больше, чем фактическая длина строки записываемых данных.
  3. Если записываемая переменная имеет числовой подтип Variant, оператор Put записывает дополнительно 2 байта, указывающие на тип. См. п.2.
  4. Если записываемая переменная имеет строковый подтип Variant, оператор Put записывает дополнительно 2 байта, указывающие на тип и еще 2 — на длину. Соответственно, значение Len должно быть увеличено на 4.
  5. Если записываемая переменная является динамическим массивом пользовательского типа, Put записывает дескриптор, длина которого равна 2 плюс в 8 раз больше числа измерений, то есть 2 + 8 * число измерений. То есть, для одномерного массива — 10 (2+8*1), для двумерного — 18 (2+8*2) и т.д. Плюс размер массива, описать который нормально сотрудники Microsoft не удосужились.
  6. Если записываемая переменная является массивом фиксированного размера, оператор Put записывает только данные, без дескриптора.
  7. При любом другом типе переменной все также, как и в п.6.
  • Параметр Len, задаваемый при открытии, не действует. Значения переменных записываются последовательно, без заполнителя.
  • Для любого другого массива, чем массив типа, определяемого пользователем, оператор Put записывает только данные, без дескриптора.
  • Оператор Put записывает строки переменной длины, не являющиеся элементами типов, определяемых пользователем, с числом байтов равных числу знаков в строке.

Параметр position указывает начальную точку чтения и должен располагаться в диапазоне 1—2 147 483 647.

По существу, оператор назван неудачно, так как ничего не ищет, а просто перемещается по команде.

Примеры

Здесь не стоит разговаривать о микроскопических программах, хотя из приводимых примеров можно извлекать блоки и использовать их в качестве заготовок.

Также не будет полноценных примеров для бездумного копирования.

Многие ситуации содержат схожие требования, но идеальное решение должно состоять из множества функций. Сейчас их делать не очень хочется, но это запланировано в перспективе.

В любом случае, все примеры полностью работоспособны.

Принципиально важен факт документирования функции с точки зрения возвращаемых значений. Равно как и описание передаваемых параметров.

  • Путь должен содержать литерал диска (C. ).
  • Путь не должен заканчиваться косой чертой: «C:\a\b».
  • Если путь и файл передаются отдельно, то имя файла не должно содержать пути.
  • Все параметры являются обязательными и не могут быть пустыми. Последнее обстоятельство не проверяется.

Создание файла

Данное действие специально вынесено в отдельный заголовок, так как будет базовым для примеров, когда файла ещё нет. Оно имеет множество особенностей, включая фатальные для хранящейся информации.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Ещё один момент. Добавим программу (фрагмент), которая будет запускать процесс.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Проверка существования файла

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

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Запись информации в новый файл

Разумеется, что в этой ситуации файл нужно не открыть, а создать.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Добавление информации в существующий файл

Казалось бы. Но первым действием должна быть проверка его наличия, если это не было сделано в программе ранее.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Построчное считывание файла

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Назначение текущей папки

Если работа с проектами так или иначе связана с файлами, хранящимися в одной папке, самым простым вариантом будет назначение ее текущей.

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

Доступ к размещенным в этом месте материалам ограничен и предоставляется следующим категориям:
1. Студент I/II курса ВХК РАН. 2. Бывший студент ВХК РАН. 3. Подготовка к ОГЭ. 4. Подготовка к ЕГЭ. 5. VIP-пользователь. 6. Благотворитель.

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


Copyright © 1993–2021 Мацкявичюс Д.А. Все права защищены.
Никакая часть сайта не может быть воспроизведена никаким способом без письменного разрешения правообладателя и явной ссылки на данный ресурс.


Есть много способов скопировать или переместить файл из одной папки в другую. Мы можем сделать это вручную, скопировав и вырезав значок файла и вставив его в папку назначения. Но когда дело доходит до автоматизации этого процесса копирования файла, мы можем сделать это и в VBA. Чтобы скопировать файл, у нас есть функция, доступная в VBA, которая называется «Копирование файла».

Синтаксис FileCopy в Excel VBA

Применить File Copy в VBA очень легко. Синтаксис File Copy выглядит так, как показано ниже.


File Copy имеет только два компонента для подачи. Которые:

  • Источник - Здесь мы разместим исходное местоположение, откуда нам нужно скопировать файл.
  • Назначение - и это будет папка назначения, в которую мы будем вставлять скопированный файл.

Полный синтаксис будет в типе String. Потому что мы будем использовать путь к файлу, который будет в виде текста.

Как скопировать файл в Excel VBA?

Теперь давайте попробуем с некоторыми примерами копирования файлов VBA в Excel.

Вы можете скачать этот VBA Скопировать файл Excel шаблон здесь - VBA Скопировать файл Excel шаблон

Пример № 1 - FileCopy в VBA

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

Для этого нам понадобится файл любого вида или расширения. Здесь мы рассматриваем файл Excel с расширением xlsx . Как мы видим, мы поместили этот файл Excel в папку, которая легко доступна и называется Test .


Теперь мы скопируем этот файл с помощью FileCopy в указанную ниже папку назначения.


Шаг 1: Для этого перейдите в VBA и откройте раскрывающийся список «Модуль из вставки», как показано ниже.


Шаг 2: Теперь в открытом модуле напишите подкатегорию VBA FileCopy или любое другое имя по вашему выбору.

Код:


Шаг 3: Теперь откройте функцию FileCopy, как показано ниже.

Код:


Шаг 4: Теперь в кавычках напишите адрес местоположения источника, а затем имя и расширение файла, как показано ниже.

Код:


Шаг 5: В качестве места назначения снова поместите путь в кавычки, затем файл и расширение.

Код:


Шаг 6: Теперь скомпилируйте код и запустите его, нажав на кнопку Play, которая находится под строкой меню. Мы увидим, что файл Excel с именем Test теперь копируется из исходного местоположения в местоположение назначения, как показано ниже. Поскольку в файле ничего не было, размер файла равен 0 КБ .


Пример №2 - FileCopy в VBA

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

Шаг 1: Теперь сначала откройте новый модуль и напишите подкатегорию VBA File Copy, как показано ниже.

Код:


Шаг 2: Сначала определите переменную, в которую мы будем помещать исходное местоположение файла того же файла Excel, который мы использовали в примере-1 в качестве String.

Код:


Шаг 3: Аналогичным образом, нам понадобится еще одна переменная для места назначения.

Код:


Шаг 4: Теперь поместите местоположение в первую определенную переменную, которая является « FirstLocation » вместе с именем файла и его расширением.

Код:


Шаг 5: Аналогичным образом сделайте то же самое для местоположения пункта назначения, используя переменную « SecondLocation», которую мы определили выше.

Код:


Шаг 6: Теперь пришло время использовать функцию FileCopy .

Код:


В соответствии с синтаксисом FileCopy, во-первых, мы должны указать местоположение источника, где мы сохранили файл. Но, как мы уже определили выше, исходные и целевые папки для обеих переменных.

Шаг 7: Итак, здесь мы можем напрямую выбрать эти переменные. Сначала выберите переменную местоположения источника, которая является FirstLocation .

Код:


Шаг 8: Снова аналогичным образом выберите переменную места назначения, которая является SecondLocation, как показано ниже.

Код:


Шаг 9: После этого мы скомпилируем код, нажав функциональную клавишу F8. И если ошибки не найдены, запустите код. Мы увидим, что файл из исходного местоположения копируется и вставляется в папку назначения, как показано ниже.


Мы можем попробовать другой путь. Для теста давайте рассмотрим другое местоположение источника, где у нас будет файл слова.

Как мы видим, в файле нет данных, поэтому размер снова отображается как 0 КБ.


И целевой папкой будет папка «Расположение вывода», которая находится в папке «Расположение ввода». Если мы видим внутри файла, нет доступных данных.


Теперь мы заменим источник и назначение в переменных FirstLocation и Second Location соответственно, за которыми следуют имя файла и его расширение.

Код:


Теперь запустите код.

Мы увидим, что файл Test word теперь копируется из папки Input Location в папку Output location с тем же размером, который равен 0 КБ.


Плюсы FileCopy в VBA

  • Может использоваться для копирования более 1 файла за один снимок.
  • Для 10 файлов требуется примерно столько же времени, сколько для копирования одного файла.
  • Мы можем использовать любой тип файла расширения, который мы хотим скопировать.

То, что нужно запомнить

  • Всегда ставьте имя файла и его расширение в конце имени местоположения.
  • Заключите в кавычки ссылки места назначения и источника.
  • После этого сохраните код в макросе, чтобы Excel смог использовать и сохранить код для будущих целей.
  • Всегда предоставляйте разрешение на код, чтобы он мог скопировать файл из исходного расположения и вставить его в место назначения.

Рекомендуемые статьи

Это руководство по FileCopy в VBA. Здесь мы обсуждаем, как скопировать файл Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

Предположим, у меня есть большая папка, которая содержит файлы разных типов, такие как docx, jpg, xlsx и т. Д., Как показано на следующем скриншоте. Теперь я хочу переместить файлы некоторых определенных типов из папки в другую новую папку, не перемещая их вручную. Есть ли у вас хорошие идеи для решения этой задачи в Excel?


Перемещайте определенные файлы из одной папки в другую с кодом VBA

Удивительный! Использование эффективных вкладок в Excel, таких как Chrome, Firefox и Safari!
Экономьте 50% своего времени и сокращайте тысячи щелчков мышью каждый день!

Чтобы переместить все определенные типы файлов из одной папки в другую так быстро, как вы хотите, следующий код VBA может вам помочь, сделайте следующее:

1, Удерживать ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модульи вставьте следующий код в Модуль Окно.

Код VBA: перемещать определенные типы файлов из одной папки в другую:

Внимание: В приведенном выше коде "* .xlsx *,* .jpg"в сценарии: xExtArr = массив ("*. xlsx *", "* .jpg") - это типы файлов, которые вы хотите переместить, вы можете изменить их на другие или добавить другие типы файлов по мере необходимости.

3, Затем нажмите F5 нажмите клавишу для запуска этого кода, и появилось окно, напоминающее вам о выборе исходной папки, из которой вы хотите переместить файлы, см. снимок экрана:


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


5, Затем нажмите OK, появится окно подсказки, чтобы напомнить вам, сколько файлов было перемещено, закройте его, и вы увидите, что определенные файлы jpg, xlsx были перемещены в указанную папку, см. снимок экрана:

Работая с файловой системой Windows часто приходится выполнять различные действия с файлами, например, как переместить файл, как скопировать файлы и папки и так далее. Всё это легко реализовать вручную, но, можно прибегнуть и к программированию.

Как переместить файл или файла с помощью объекта FileSystemObject

В этой статье мы рассмотрим методы объекта FileSystemObject, которые показывают, как программным путём с помощью сценариев Windows Script Host переместить файлы в указанное место, получить полный путь из относительного пути, путь к родительскому каталогу или имя диска, на котором находится заданный каталог.

Хорошо, прежде чем приступать к программированию и описанию методов, давайте вспомним, как переместить файл рядовым методом в операционной системе Windows. Что бы переместить файл из одной папки в другую, нужно просто зажать клавишу "Shift" и переместить нужный файл, или папку с файлами в другое место ( на другой диск или в другой каталог ). Тут, как говорится, элементарно. Теперь давайте рассмотрим наши методы объекта FileSystemObject, который отвечает за работу с файловой системой Windows.

Следующие три методы в качестве параметра (parthspec) принимают относительный путь к каталогу или диску:

GetAbsolutePathName (parthspec) – Возвращает полный путь.

Допустим, мы запускаем наш сценарий из папки D:\Work\My_Script . Давайте посмотрим, что вернёт метод при разных переданных значениях.

  • Параметр pathspec – Возвращаемое значение
  • "d:" - "d:\work\My_Script"
  • "d. " - "d:\work"
  • "d:\\\" - "d:\"
  • "d:*.*\folder_1" - "d:\work\My_Script\*.*\folder_1"
  • "folder_2" - "d:\work\My_Script\folder_2"
  • "d:\..\..\work" - "d:\work"

GetParentFolderName (parthspec) – Возвращает путь к родительскому каталогу. Если переданный параметр не содержит родительского каталога (мы передали имя диска), то метод вернёт пустую строку.

GetDriveName (parthspec) – Возвращает имя диска. Если не удастся определить имя диска, то метод вернёт пустую строку.

Следующий метод показывает, как переместить файл или несколько файлов.

MoveFile (source, destination) – Как видим, нам нужно передать два параметра, первый параметр содержит строку, которая хранит полный путь к файлу, который надо переместить. Мы можем использовать подстановочные знаки, например, "?" – любой один символ или "*" – любое количество символов. Используя подстановочные знаки, мы можем переместить сразу нескольких файлов. Второй параметр destination также содержит путь к каталогу, в который нужно переместить файлы.

Как видим, ничего сложного нет, теперь приступим к программированию, сначала напишем сценарий на языке vbscript, после него я дам пояснения, а уже потом рассмотрим аналогичный скрипт, но уже на языке jscript.

Как переместить файл в файловой системе Windows

Мы рассмотрели, как переместить файл, точнее группу файлов программным путём с помощью языка программирования vbscript. Теперь посмотрим на аналогичный пример, но уже на языке jscript.

Я всегда стараюсь при возможности приводить примеры на обоих языках, так как это позволяет произвести анализ кода и сделать сравнение. Так, мне нужна буквально минута, что бы перевести код языка vbscript на код языка jscript.

Как переместить файлы в системе Windows

Ну что же, в этой статье мы рассмотрели методы объекта FileSystemObject – MoveFile, GetAbsolutePathName, GetParentFolderName и GetDriveName, которые показывают, как переместить файл или группу файлов из одного места в другое, а также - как получить абсолютный путь или имя диска.

Спасибо за внимание. Автор блога Владимир Баталий

Читайте также: