Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Нахождения и замена существующего файла своим (http://forum.oszone.net/showthread.php?t=299310)

ufooo 04-05-2015 02:02 2503481

Нахождения и замена существующего файла своим
 
Пользуюс таким кодом для поиска и замены файлов. Он заменяет мне оригинальный (.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 2503482

Цитата:

Цитата ufooo
но вопрос о том что этот скрипт сам своего (.exe) файла который лежит рядом с ним тоже перекопирует поверх себя? »

Разумеется, поскольку нет никаких проверок. Точнее — он попытается это сделать.

Цитата:

Цитата ufooo
И правильно ли это что такой вариант называется "копирование по маске". »

Кто Вам это сказал? Я лично не вижу тут никакой маски.

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

iccup.platoon@vk 04-05-2015 03:10 2503483

Копирование по маске - это
Код:

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

ufooo 04-05-2015 03:24 2503486

Цитата:

Цитата Iska
Я лично не вижу тут никакой маски »

Копирования по маске, я понимаю будет так: (*.exe).
Цитата:

Цитата Iska
Разумеется, поскольку нет никаких проверок »

А как зделать проверку чтобы было четко. Какие строки, и где их в моем скрипте добавлять.

iccup.platoon@vk 04-05-2015 03:40 2503487

Попробуй так:
Код:

@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



Время: 21:29.

Время: 21:29.
© OSzone.net 2001-