PDA

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


vsesam
20-02-2013, 23:33
Копирование файла в зависимости от имени компьютера(либо ip) с заменой имеющегося.
Поясню: Есть N компьютеров, на каждом установлена программа "X", перед её запуском нужно заменить файл в её директории на другой файл из другой директории в которой для каждого компьютера сгенерирован свой файл. Бат файл должен определять имя или ip (так как они неизменны) и исходя из этого решать какой из файлов какому компьютеру копировать с заменой имеющегося и уже после этого запускать программу.

Условия:
Имена компьютеров от P1 до P30
Папка программы и имя выполняемого файла C:\Program Files\программа\файл_запуска.exe
Папка в которой нужно заменить файл C:\Program Files\программа\папка_в_которой_нужно_заменить_файл
Папка с сгенерированными файлами для замены d:\папка_с_файлами_для_замены\p1....p30\файл_для_замены

Пример:
Я запускаю батник на компьютере P5, он лезет в папку "d:\папка_с_файлами_для_замены\p5\файл_для_замены" и копирует его с заменой в папку "C:\Program Files\программа\папка_в_которой_нужно_заменить_файл", после чего запускает программу "C:\Program Files\программа\файл_запуска.exe"
Спасибо.

Iska
21-02-2013, 01:12
Потрясающее утверждение. И что?! Вопрос где?

vsesam
21-02-2013, 01:17
рясающее утверждение. И что?! Вопрос где? »
нужно создать bat файл. категорию для этого выбирают!?
Поясню: Есть N компьютеров, на каждом установлена программа "X", перед её запуском нужно заменить файл в её директории на другой файл из другой директории в которой для каждого компьютера сгенерирован свой файл. Бат файл должен определять имя или ip (так как они неизменны) и исходя из этого решать какой из файлов какому компьютеру копировать с заменой имеющегося и уже после этого запускать программу.

Iska
21-02-2013, 02:52
Всё равно мало информации.
@echo off
setlocal enableextensions enabledelayedexpansion

if exist "\\Server\Share$\FileName_%ComputerName%.txt" copy "\\Server\Share$\FileName_%ComputerName%.txt" "%~dp0"
"%~dp0Program.exe"

endlocal
exit /b 0

vsesam
21-02-2013, 11:53
@echo off
setlocal enableextensions enabledelayedexpansion
if exist "\\Server\Share$\FileName_%ComputerName%.txt" copy "\\Server\Share$\FileName_%ComputerName%.txt" "%~dp0"
"%~dp0Program.exe"
endlocal
exit /b 0 »
Непонятно, можно более раскрыто?

Имена компьютеров от P1 до P30
Папка программы и имя выполняемого файла C:\Program Files\программа\файл_запуска.exe
Папка в которой нужно заменить файл C:\Program Files\программа\папка_в_которой_нужно_заменить_файл
Папка с сгенерированными файлами для замены d:\папка_с_файлами_для_замены\p1....p30\файл_для_замены

Пример:
Я запускаю батник на компьютере P5, он лезет в папку "d:\папка_с_файлами_для_замены\p5\файл_для_замены" и копирует его с заменой в папку "C:\Program Files\программа\папка_в_которой_нужно_заменить_файл", после чего запускает программу "C:\Program Files\программа\файл_запуска.exe"

Iska
21-02-2013, 12:16
Если существует файл «FileName_КомпьютерИмярек.txt» по пути «\\Server\Share$», скопировать его в папку, содержащую данный пакетный файл. Затем из этой же папки запустить исполняемый файл «Program.exe».

vsesam
21-02-2013, 12:27
Если существует файл «FileName_КомпьютерИмярек.txt» по пути «\\Server\Share$», скопировать его в папку, содержащую данный пакетный файл. Затем из этой же папки запустить исполняемый файл «Program.exe». »
Файл в любом случае существует и всегда называется одинаково и тот файл который нужно скопировать имеет такое же название
Все из этого я понимаю, только как это решает мою задачу? можно на моем примере? Спасибо!

Iska
21-02-2013, 12:52
можно на моем примере? »
На каком «Вашем примере»?! Вы разве привели какую-то конкретику: откуда и куда копировать — имя исходной папки, имя конечной папки, примеры имени файла; имя и путь к приложению?!

Ясно. Вы отредактировали свой пред-предыдущий пост позже, когда он уже «ушел» далеко вверх.

vsesam
21-02-2013, 12:56
На каком «Вашем примере»?! Вы разве привели какую-то конкретику: откуда и куда копировать — имя исходной папки, имя конечной папки, примеры имени файла; имя и путь к приложению?! »
Да привел.
Имя копируемого(заменяемого) файла всегда одинаковое.

Имена компьютеров от P1 до P30
Папка программы и имя выполняемого файла C:\Program Files\программа\файл_запуска.exe
Папка в которой нужно заменить файл C:\Program Files\программа\папка_в_которой_нужно_заменить_файл
Папка с сгенерированными файлами для замены d:\папка_с_файлами_для_замены\p1....p30\файл_для_замены

Пример:
Я запускаю батник на компьютере P5, он лезет в папку "d:\папка_с_файлами_для_замены\p5\файл_для_замены" и копирует его с заменой в папку "C:\Program Files\программа\папка_в_которой_нужно_заменить_файл", после чего запускает программу "C:\Program Files\программа\файл_запуска.exe"

Iska
21-02-2013, 14:33
Имена компьютеров от P1 до P30

…»
С этого и надо было начинать. С самого первого поста.

Меняйте здесь:
@echo off
setlocal enableextensions enabledelayedexpansion

set sPath=%ProgramFiles%\программа
set sFile=d:\папка_с_файлами_для_замены\%ComputerName%\файл_для_замены

if exist "%sFile%" copy "%sFile%" "%sPath%\папка_в_которой_нужно_заменить_файл\"
"%sPath%\файл_запуска.exe"

endlocal
exit /b 0
алогизмы на реальные имена и пробуйте.

vsesam
21-02-2013, 14:52
set sPath=%ProgramFiles%\программа »
А если программа будет находится не на системном диске?
Например:
"D:\программа"
Что потребуется изменить?
Спасибо, Вы мне очень помогли.

Iska
21-02-2013, 15:58
А если программа будет находится не на системном диске?
Например:
"D:\программа"
Что потребуется изменить? »
Вы подразумеваете, что приложение было установлено не в «%ProgramFiles%»? Тогда указывайте путь, не используя переменные окружения, напрямую:
set sPath=D:\Путь к папке с приложением

vsesam
21-02-2013, 16:30
Вы подразумеваете, что приложение было установлено не в «%ProgramFiles%»? Тогда указывайте путь, не используя переменные окружения, напрямую: »
Спасибо!
Решено!




© OSzone.net 2001-2012