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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Копирование файла по заданному пути для разных типов ОС (http://forum.oszone.net/showthread.php?t=237490)

foma555 28-06-2012 19:13 1942246

Копирование файла по заданному пути для разных типов ОС
 
Привет, Ребята.
Я ещё новичёк, и пока не разбираюсь в этом языке программирования. Но очень хочу научиться.
Помогите пожалуйста.
Задача: Файл лежит по пути: C:\5\files\TEMP\programma.exe
нужно его скопировать в путь: C:\Program Files\files\myProgram\programma.exe
(разрядность систем x96-x64 нужно учитывать)
(процесс копирования оображать не надо)
ну и запустить скопированный файлик.
Подскажите плз, какой код должен быть.
P.S. Сори, если это где-то было уже.

foma555 28-06-2012 19:55 1942262

всё, сам разобрался.
Код:

FileCopy("C:\5\files\TEMP\programma.exe", "C:\Program Files\files\myProgram\programma.exe", 9)
тока не понял как сделать разделение для x64. и надо ли оно.

Iska 28-06-2012 21:26 1942314

Macros

foma555 28-06-2012 22:37 1942355

Iska, ок, понял.
Ещё бы теперь научитья испольовать его у с учётом выше написанного кода :dont-know

а , кажись разобрался.
Тока вот проблемса. у меня есть команда
Код:

Run('C:\Windows\Notepad.exe "C:\Program Files\files\textes\info.txt" ')
вот как бы её реализовать корректно для x64. В ней нужно направить запрос не в C:\Program Files а в C:\Program Files (x86)

Хотя всё, и это догадался как реализовать.
Могу выложить вариант, кому надо.

Creat0R 29-06-2012 04:59 1942467

Цитата:

Цитата foma555
Могу выложить вариант, кому надо »

Выложи, и будь добр, пометь тему как решённая.

apozlevich 29-06-2012 15:53 1942789

Набросал код:
Код:

#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" указывает на создание недостающих директорий.

foma555 29-06-2012 23:33 1943088

Цитата:

Цитата apozlevich
"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


Creat0R 30-06-2012 00:18 1943117

Цитата:

Цитата foma555
насколько помню, в х64 переменная переадресовывает на просто програм файлз »

Можно отключить переадресацию:
Код:

DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1)

apozlevich 30-06-2012 09:54 1943200

Цитата:

Цитата foma555
EnvGet('ProgramFiles(x86)') »

Хм.. а такая переменная есть? Пойду на виртуальник семерку поставлю чтоль

foma555 30-06-2012 11:54 1943258

Цитата:

Цитата Creat0R
Можно отключить переадресацию:
Код:

DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "int", 1) »

сори, не особо разбираюсь в этом пока. Тока начал изучать язык)
Цитата:

Цитата apozlevich
Хм.. а такая переменная есть? Пойду на виртуальник семерку поставлю чтоль »

да, на 7 x64 пробовал у друга. вроде как работает


Время: 06:49.

Время: 06:49.
© OSzone.net 2001-