Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Elven

Ветеран


Сообщения: 992
Благодарности: 268

Профиль | Сайт | Отправить 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!"
))
file.txt файл в котором лежат пары файлов original_replacement*
d:\files4replace\ место где лежат файлы на замену

Примечание
*file.txt в котором хранятся пары файлов на замену должен иметь вид:
Код: Выделить весь код
111.txt_222.txt
333.txt_444.txt
т.е. два имени файлов разделены подчеркиванием, первый файл - оригинальный, второй - вставляемый на место оригинала.
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:20, 11-09-2014 | #2