Войти

Показать полную графическую версию : [решено] Нахождения и замена существующего файла своим


ufooo
04-05-2015, 02:02
Пользуюс таким кодом для поиска и замены файлов. Он заменяет мне оригинальный (.exe) файл "крякнутым".
Заменяемый (.exe) файл должен находится рядом с "батником". Как я понимаю нижеуказанный скрипт ищет конкретный (.exe) файл по всем дискам компа, и если нашел то забирает тот (.exe) файл который находится рядом с ним, и копирует и заменяет ево туда где только что вел успешный поиск. Скрипт работаеи, но вопрос о том что этот скрипт сам своего (.exe) файла который лежит рядом с ним тоже перекопирует поверх себя? И правильно ли это что такой вариант называется "копирование по маске".
@echo off
set direct="%~dp0"
for %%z in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
for /f "delims=*" %%H in ('dir /s /b /a-d "%%z:\skyrim.exe" ^|Findstr /bev /c:%direct%skyrim.exe') do call :1 "%%~sH"
)
goto:eof
:1
echo %1
copy /y %direct%skyrim.exe %1

Iska
04-05-2015, 02:45
но вопрос о том что этот скрипт сам своего (.exe) файла который лежит рядом с ним тоже перекопирует поверх себя? »
Разумеется, поскольку нет никаких проверок. Точнее — он попытается это сделать.

И правильно ли это что такой вариант называется "копирование по маске". »
Кто Вам это сказал? Я лично не вижу тут никакой маски.

Явно не хватает кавычек при обоих аргументах команды «copy».

iccup.platoon@vk
04-05-2015, 03:10
Копирование по маске - это

xcopy "D:\otkudato\*.txt" "D:\kudato"

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

ufooo
04-05-2015, 03:24
Я лично не вижу тут никакой маски »
Копирования по маске, я понимаю будет так: (*.exe).
Разумеется, поскольку нет никаких проверок »
А как зделать проверку чтобы было четко. Какие строки, и где их в моем скрипте добавлять.

iccup.platoon@vk
04-05-2015, 03:40
Попробуй так:

@echo off
set direct="%~dp0"
for %%z in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
for /f "delims=*" %%H in ('dir /s /b /a-d "%%z:\skyrim.exe" ^|Findstr /bev /c:%direct%skyrim.exe') do call :1 "%%~sH"
)
goto:eof
:1
echo %1
attrib +r %direct%skyrim.exe
xcopy /q /c /y %direct%skyrim.exe %1
attrib -r %direct%skyrim.exe


А вот в этом не уверен, сделал проверку на "if"

@echo off
set direct="%~dp0"
for %%z in (c d e f g h i j k l m n o p q r s t u v w x y z) do (
for /f "delims=*" %%H in ('dir /s /b /a-d "%%z:\skyrim.exe" ^|Findstr /bev /c:%direct%skyrim.exe') do call :1 "%%~sH"
)
goto:eof
:1
echo %1
if /I not "%1" xcopy /q /c /y %direct%skyrim.exe %1
xcopy /q /c /y %direct%skyrim.exe %1




© OSzone.net 2001-2012