Показать полную графическую версию : [решено] Копирование файла по заданному пути для разных типов ОС
Привет, Ребята.
Я ещё новичёк, и пока не разбираюсь в этом языке программирования. Но очень хочу научиться.
Помогите пожалуйста.
Задача: Файл лежит по пути: C:\5\files\TEMP\programma.exe
нужно его скопировать в путь: C:\Program Files\files\myProgram\programma.exe
(разрядность систем x96-x64 нужно учитывать)
(процесс копирования оображать не надо)
ну и запустить скопированный файлик.
Подскажите плз, какой код должен быть.
P.S. Сори, если это где-то было уже.
всё, сам разобрался.
FileCopy("C:\5\files\TEMP\programma.exe", "C:\Program Files\files\myProgram\programma.exe", 9)
тока не понял как сделать разделение для x64. и надо ли оно.
Macros (http://www.autoitscript.com/autoit3/docs/macros.htm)
Iska, ок, понял.
Ещё бы теперь научитья испольовать его у с учётом выше написанного кода :dont-know
а , кажись разобрался.
Тока вот проблемса. у меня есть команда
Run('C:\Windows\Notepad.exe "C:\Program Files\files\textes\info.txt" ')
вот как бы её реализовать корректно для x64. В ней нужно направить запрос не в C:\Program Files а в C:\Program Files (x86)
Хотя всё, и это догадался как реализовать.
Могу выложить вариант, кому надо.
Могу выложить вариант, кому надо »
Выложи, и будь добр, пометь тему как решённая.
apozlevich
29-06-2012, 15:53
Набросал код:
#NoTrayIcon ; убираем иконку в трее, она не нужна точно.
FileCopy(@SystemDrive & "\5\files\TEMP\programma.exe", @ProgramFilesDir & "\files\myProgram\programma.exe", 1 + 8) ; копирование файла
RunWait(@ProgramFilesDir & "\files\myProgram\programma.exe") ; запуск файла с ожиданием конца его работы
Рассмотрим строку FileCopy(@SystemDrive & "\5\files\TEMP\programma.exe", @ProgramFilesDir & "\files\myProgram\programma.exe", 1 + 8)
@SystemDrive - макрос, указывающий на системный диск (то есть C:) (на всякий случай, ведь система бывает установлена не только на C:)
& - символ конкатенации, объединения строк
@ProgramFilesDir - макрос, указывающий на папку программ ("Program Files" в операционке x86 или "Program Files (x86)" в x64)
1 + 8 - флаги копирования, "1" указывает на перезапись существующих файлов, "8" указывает на создание недостающих директорий.
"Program Files (x86)" в x64) »
насколько помню, в х64 переменная переадресовывает на просто програм файлз. А в програм файлз х86 можно запихнуть. Ниже выкладываю то, как я сделал.
$ProgramFilesDir = EnvGet('ProgramFiles(x86)') ; for 64bit Win it will return a valid path.
if not $ProgramFilesDir then $ProgramFilesDir = @ProgramFilesDir ;
FileCopy(@SystemDrive & "\5\files\TEMP\programma.exe", $ProgramFilesDir & "\files\myProgram\programma.exe", 9)
Если же захотим не копировать, а скажем запустить файл по такому разделению, то код будет такой:
$ProgramFilesDir = EnvGet('ProgramFiles(x86)') ; for 64bit Win it will return a valid path.
if not $ProgramFilesDir then $ProgramFilesDir = @ProgramFilesDir ;
if $ProgramFilesDir = EnvGet('ProgramFiles(x86)') then
Run('C:\Windows\Notepad.exe "C:\Program Files (x86)\files\myProgram\Info.txt" ')
else
Run('C:\Windows\Notepad.exe "C:\Program Files\files\myProgram\Info.txt" ')
endif
насколько помню, в х64 переменная переадресовывает на просто програм файлз »
Можно отключить переадресацию:
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)
apozlevich
30-06-2012, 09:54
EnvGet('ProgramFiles(x86)') »
Хм.. а такая переменная есть? Пойду на виртуальник семерку поставлю чтоль
Можно отключить переадресацию:
DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1) »
сори, не особо разбираюсь в этом пока. Тока начал изучать язык)
Хм.. а такая переменная есть? Пойду на виртуальник семерку поставлю чтоль »
да, на 7 x64 пробовал у друга. вроде как работает
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.