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

Обновлено: 07.07.2024

Есть три способа создания пустого текстового файла (иногда называемого как «text stream»).

Первый способ — это использование метода CreateTextFile. В следующем примере показано, как создать текстовый файл, используя этот метод: Пример использования данного метода см. в разделе «3.7. Пример работы с объектом FileSystemObject».

Второй способ — это использование метода OpenTextFile объекта FileSystemObject с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод: Третий способ — это использование метода OpenAsTextStream с набором флагов ForWriting. В следующем примере показано, как создать текстовый файл, используя этот метод:

Добавление данных в файл

  • Открыть текстовый файл
  • Записать данные
  • Закрыть файл

Для записи данных в текстовый файл используйте методы Write, WriteLine или WriteBlankLines объекта TextStream, в зависимости от задач, описанных в приведённой ниже таблице:

Задача Метод
Запись данных в текстовый файл без символа перехода на новую строку в конце Write
Запись данных в текстовый файл с символом перехода на новую строку в конце WriteLine
Запись одной или более пустых строк в открытый текстовый файл WriteBlankLines

Для закрытия текстового файла используйте метод Close объекта TextStream. Закрыть файл можно также методом Close объекта FileSystemObject. Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».

ПРИМЕЧАНИЕ
Символ новой строки содержит символ или символы (зависит от операционной системы) для перевода курсора в начало новой строки (возврат каретки/перевод строки). Следует учитывать, что некоторые строки уже могут иметь в конце эти непечатаемые символы.

В следующем примере показано, как выполняется запись данных в открытый файл всеми тремя методами, затем файл закрывается:

Чтение файлов

Для чтения данных из файла используйте методы Read, ReadLine или ReadAll объекта TextStream. Эти методы и задачи, решаемые с их помощью, описаны в приведённой ниже таблице:

Задача Метод
Чтение указанного количества символов из файла Read
Чтение полной строки из файла (до символа конца строки, но не включая его) ReadLine
Чтение всего содержимого файла ReadAll

Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».

Если вы используете методы Read или ReadLine и хотите пропустить определённую часть данных, то используйте методы Scip или ScipLine. Полученный в результате работы этих методов текст может быть сохранён в строку, которую можно отобразить на экране в элементе управления, передать в качестве параметра в строковую функцию (например, в Left, Right или Mid), соединить с другой строкой и т.п.

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

Перемещение, копирование и удаление файлов

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

Задача Метод
Перемещение файла File.Move или FileSystemObject.MoveFile
Копирование файла File.Copy или FileSystemObject.CopyFile
Удаление файла File.Delete или FileSystemObject.DeleteFile

Пример использования данных методов см. в разделе «3.7. Пример работы с объектом FileSystemObject».

В следующем примере создаётся текстовый файл в корневом каталоге диска С, записывается в него некоторая информация. Затем файл перемещается в директорию с именем \tmp, копируется в директорию \temp, а затем удаляются копии из обеих директорий.

Для проверки работы этого примера создайте в корневом каталоге диска С директории tmp и temp.


Перемещение файла из одной папки в другую
Как переместить файл с настройками из папки C:\Program Files\ООО в AppData\Roaming в папку МММ.


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

Перемещение файла из одной папки в другую
в главную папку сайта загружаем файл my_file.txt: <?php $uploaddir = ' '; if.

MoveFile, перемещение файла из одной заданной пользователем папки в другую
Конкретно в чём суть проблемы:Захотел сделать программу которая будет перемещать файл,из директории.

Добавлено через 10 минут
Пожалуйста, подправьте, что бы файл перезаписывался.
Пишет, что файл уже существует.

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

Не знаю. Положил рядом со скриптом prefs.xml, запустил скрипт — увидел его в папке C:\Users\USERNAME\AppData\Roaming\Geek Uninstaller\. Положил новый prefs.xml рядом со скриптом, запустил — там же увидел замену. Никаких ошибок. Сценарий: D:\Desktop\1.vbs
Строка: 1
Символ: 64
Ошибка: Предполагается наличие ')'
Код: 800A03EE
Источник: Ошибка компиляции Microsoft VBScript Нет, я скопипастил ваш предыдущий верный вариант с кавычками для строки: "Geek Uninstaller". Не понимаю, зачем было их убирать?
И да, папка "%APPDATA%\Geek Uninstaller" должна существовать. И да, папка "%APPDATA%\Geek Uninstaller" должна существовать.

Понятно теперь почему ошибка, папки не было.

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


Копирование файла из одной папки в другую папку с названием того файла
Здравствуйте. Задача: Есть список названий картинок в таблице Excel. (1.jpg, 2.jpg. ) .


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

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

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

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

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

Поскольку я планирую запускать VBS каждые 10 минут, он не должен снова копировать те же файлы, которые уже присутствуют в папке.

2 ответа

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

Вы пытаетесь добиться этого с помощью следующего кода

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

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

enter image description here

И в FolderExample, и в sub01 есть файл с именем image01.jpg.

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

enter image description here

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

Это означает, что вы можете заменить

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

Изменить: так как вы хотите переместить исходное дерево в целевую папку, robocopy не будет работать в вашем случае. Ваш существующий код близок к тому, что вы хотите, но поскольку вы не хотите перезаписывать существующие файлы, а также не хотите создавать «версионные» копии, вам необходимо изменить это:

Для использования различных папок назначения в зависимости от расширения вы можете использовать словарь для хранения путей назначения:

Как мы уже говорили, В VBS для работы с файловой системой существует FileSystemObject.

При помощи FSO можно работать с папками. Алгоритм начала работы такой:

1. Объявляем переменную. Не обязательно такое же название, но оно наиболее логичное. А ещё, ваш код будет понятнее для других.

Dim FSO

2. Записываем в переменную FSO копию объекта FileSystemObject, который предназначен для работы с файловой системой Windows

3. Получаем доступ к папке в переменной fold

А теперь давайте посмотрим, что мы можем сделать с папками?

А так же непосредственно с FSO:

Коллекция SubFolders

Set subfold = f.SubFolders

Теперь мы получили доступ к подкаталогам выбранного каталога в переменную subfold. Давайте взглянем на простой пример использования коллекции SubFolders:

SubFolders

Давайте разберёмся поподробнее. Итак, вводим путь в переменную Path. Далее в переменную FSO копируем объект FileSystemObject(строка2). Далее при условии, что путь существует(строка 4, FolderExists) мы в переменную oFolders получаем доступ к папке по указанному пути(строка 5). Далее мы в переменную oSubFolders получаем коллекцию SubFolders в переменную oSubFolders(строка 6). Далее мы начинаем цикл For Each для каждого элемента, названного нами item в коллекции oSubFolders(та самая переменная, куда мы полуили коллекцию SubFolders) в строке 7. В 8 строке кода мы добавляем к переменной TEMP название папки(item.Name) и выполняем переход на след.строку(chr(13)).

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

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

В прошлом случае, для переменной с коллекцией oSubFolders можно было применить: oSubFolders.count

Это бы нам вернуло количество элементов коллекции.

Вот, вроде бы и всё. Далее будем разбирать задачи. Но прежде, я хотел бы ещё привести 1 полезную штуку, правда не из FSO. Хотел бы её заранее объяснить, чтобы не возникло вопросов.

Path = objTree.Self.Path
Name = objTree.Self.name

Работа конструкции такова: Создаётся копия объекта в переменную oShell. Далее при помощи метода BrowseFolFolder вызывается окно поиска папки. Первое значение 0 должно быть нулём, далее идёт текст. Далее метод, по которому будет выполнятся отображение, и путь, от которого будет идти поиск. Выше этого пути выйти будет нельзя.

Приведём список методов отображения:

Путь может быть задан и численно. Вот список возможных значений:
DESKTOP = 0
PROGRAMS = 2
DRIVES = 17
NETWORK = 18
NETHOOD = 19
PROGRAMFILES = 38
PROGRAMFILESx86 = 48
WINDOWS = 36

Итак, теперь задачи.

ЗАДАЧА 1 : Компьютер на любом из существующем локальном диске компьютера ищет произвольную папку и выстраивает произвольной длинны папку. После чего, выдаёт всю информацию по данной папке.

Код довольно большой, поэтому разобьём его на несколько блоков:

Folder zadacha

Итак, создаём объект FSO, запускаем генератор случайных чисел. Далее расписываем функции(далее на каждой остановимся). Нам нужно сделать 3 разные вещи: Выбрать локальный диск компьютера(первая функция, строки 5-14), Раскрыть каталог и выбрать там ещё каталог(вторая функция, 16-32) и Вывести информацию по каталогу(третья функция, 34-42). Прежде чем мы вернёмся к основному коду давайте рассмотрим работу функций и поймём, как они устроены у нас.

Итак, выбор локального диска на компьютере:

Выбор папки

Теперь, вернёмся к основному коду:

Ну и в самом конце мы выводим получившийся путь Path и выводим значение функции FoldInf по полученному пути Path.

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