![]() |
Поиск нескольких файлов и замена на другие
Здравствуйте
имеется скрипт: Код:
@echo off надо чтобы искал 3 файла только в диске на котором установлена винда (не задавая букву диска, учитывая, что windows может быть установлена в Y:\, L:\. P:\ и т.д.) и заменял на другие 3 файла поочередно , которые находятся в директории с батником, не указывая полные пути до них. Приведенный выше скрипт отлично заменяет 1 на другую, но почему-то после успешной замены дальше выдает ошибки типа Access deniet to:разные папки (хотя у меня админ права). Как избежать замены не на тот файл с одинаковым именем и расширением, если батник будет запущен из того же диска на котором содержатся файлы для поиска и замены(например первым найдет файл в директории с запускаемым bat и попытается его же заменить)? И не совсем понятен зачем там команда переименования ren. |
начнем с конца. команда переименование нужна для переименования конечного файла ибо переменная @path из forfiles возвращает полный путь к файлу с именем и расширением этого самого файла.
избежать замены не на тот файл можно указав абсолютный путь к правильному файлу (в вышеуказанном примере так и сделано c:\users\administrator\desktop\file22.txt) далее по правам дядюшка Билли и вся его скромненькая корпорация Мелкомягк не шибко верит в сознательность пользователей а посему режет права к некоторым файлам и папкам в особенности к тем, что находятся в папке Windows, для того чтобы к ним подобраться нужно не только быть админом, нужно уметь шаманить с владением (или владетельством?) этими самыми папками и файлами, упомяну еще раз, что лезть к ним (системным файлам) можно лишь в том случае если вы точно знаете что это за файл, с чем его принято есть, кто им питается кроме вас и из-за чего может произойти какое-нибудь несварение с последующим реактивным поносом. теперь собственно по замене файлов т.к. поиск сводится к поиску на системном диске (в данном случае диске с виндой) то лучше всего вспомнить про славную переменную %systemdrive% которая и вернет нам нужную букву и даже вместе с двоеточием, первый цикл в таком случае перепаиваем на поиск и скармливаем ему файл в котором лежат нужные нам пары на замену. Код:
@echo off d:\files4replace\ место где лежат файлы на замену Примечание *file.txt в котором хранятся пары файлов на замену должен иметь вид: Код:
111.txt_222.txt |
Спасибо за ответ, создал на системном диске 2 файла 111.txt и 333.txt, а в папке с батником 222.txt 444.txt и file.txt с указанием пар соответственно, но скрипт заменяет только 2 файла, указанные в 1-й строке, в чем может быть проблема?
|
В синтаксисе файла, в названии файлов как заменяемых так и замещающих. Даже лишний пробел может сыграть свою роль.
|
Время: 01:02. |
Время: 01:02.
© OSzone.net 2001-