|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск нескольких файлов и замена на другие |
|
CMD/BAT - Поиск нескольких файлов и замена на другие
|
Новый участник Сообщения: 5 |
Здравствуйте
имеется скрипт: @echo off for /d %%p in (c d e f) do (forfiles /s /p %%p:\ /m file1.txt /c "cmd /c xcopy /y c:\users\administrator\desktop\file22.txt @path && ren @path file22.txt") надо чтобы искал 3 файла только в диске на котором установлена винда (не задавая букву диска, учитывая, что windows может быть установлена в Y:\, L:\. P:\ и т.д.) и заменял на другие 3 файла поочередно , которые находятся в директории с батником, не указывая полные пути до них. Приведенный выше скрипт отлично заменяет 1 на другую, но почему-то после успешной замены дальше выдает ошибки типа Access deniet to:разные папки (хотя у меня админ права). Как избежать замены не на тот файл с одинаковым именем и расширением, если батник будет запущен из того же диска на котором содержатся файлы для поиска и замены(например первым найдет файл в директории с запускаемым bat и попытается его же заменить)? И не совсем понятен зачем там команда переименования ren. |
|
Отправлено: 11:47, 11-09-2014 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать начнем с конца. команда переименование нужна для переименования конечного файла ибо переменная @path из forfiles возвращает полный путь к файлу с именем и расширением этого самого файла.
избежать замены не на тот файл можно указав абсолютный путь к правильному файлу (в вышеуказанном примере так и сделано c:\users\administrator\desktop\file22.txt) далее по правам дядюшка Билли и вся его скромненькая корпорация Мелкомягк не шибко верит в сознательность пользователей а посему режет права к некоторым файлам и папкам в особенности к тем, что находятся в папке Windows, для того чтобы к ним подобраться нужно не только быть админом, нужно уметь шаманить с владением (или владетельством?) этими самыми папками и файлами, упомяну еще раз, что лезть к ним (системным файлам) можно лишь в том случае если вы точно знаете что это за файл, с чем его принято есть, кто им питается кроме вас и из-за чего может произойти какое-нибудь несварение с последующим реактивным поносом. теперь собственно по замене файлов т.к. поиск сводится к поиску на системном диске (в данном случае диске с виндой) то лучше всего вспомнить про славную переменную %systemdrive% которая и вернет нам нужную букву и даже вместе с двоеточием, первый цикл в таком случае перепаиваем на поиск и скармливаем ему файл в котором лежат нужные нам пары на замену. @echo off SETLOCAL ENABLEDELAYEDEXPANSION for /f "delims=" %%i in (file.txt) do ( for /f "tokens=1-2 delims=_" %%A in ("%%i") do ( set orig=%%A set repl=%%B forfiles /s /p %systemdrive%\ /m !orig! /c "cmd /c xcopy /y d:\files4replace\!repl! @path && ren @path !repl!" )) d:\files4replace\ место где лежат файлы на замену Примечание *file.txt в котором хранятся пары файлов на замену должен иметь вид: т.е. два имени файлов разделены подчеркиванием, первый файл - оригинальный, второй - вставляемый на место оригинала. |
Отправлено: 15:20, 11-09-2014 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 5
|
Профиль | Отправить PM | Цитировать Спасибо за ответ, создал на системном диске 2 файла 111.txt и 333.txt, а в папке с батником 222.txt 444.txt и file.txt с указанием пар соответственно, но скрипт заменяет только 2 файла, указанные в 1-й строке, в чем может быть проблема?
|
Отправлено: 18:10, 11-09-2014 | #3 |
Ветеран Сообщения: 992
|
Профиль | Сайт | Отправить PM | Цитировать В синтаксисе файла, в названии файлов как заменяемых так и замещающих. Даже лишний пробел может сыграть свою роль.
|
Отправлено: 18:38, 11-09-2014 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - Поиск и замена файлов. | Drotik | Скриптовые языки администрирования Windows | 2 | 24-04-2014 18:07 | |
CMD/BAT - Поиск файлов по маске и их замена другими. | lexxstr | Скриптовые языки администрирования Windows | 0 | 20-12-2012 22:54 | |
CMD/BAT - Поиск папки и замена файлов в ней | 1Gur | Скриптовые языки администрирования Windows | 4 | 07-03-2012 18:15 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках | Gawr33 | Скриптовые языки администрирования Windows | 11 | 23-04-2011 23:09 | |
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файлов на разных дисках | 4zz | Скриптовые языки администрирования Windows | 2 | 21-02-2011 16:07 |
|