Показать полную графическую версию : [решено] Копирование файла в зависимости от имени компьютера с заменой имеющегося.
Копирование файла в зависимости от имени компьютера(либо 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"
Спасибо.
Потрясающее утверждение. И что?! Вопрос где?
рясающее утверждение. И что?! Вопрос где? »
нужно создать bat файл. категорию для этого выбирают!?
Поясню: Есть N компьютеров, на каждом установлена программа "X", перед её запуском нужно заменить файл в её директории на другой файл из другой директории в которой для каждого компьютера сгенерирован свой файл. Бат файл должен определять имя или ip (так как они неизменны) и исходя из этого решать какой из файлов какому компьютеру копировать с заменой имеющегося и уже после этого запускать программу.
Всё равно мало информации.
@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
@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"
Если существует файл «FileName_КомпьютерИмярек.txt» по пути «\\Server\Share$», скопировать его в папку, содержащую данный пакетный файл. Затем из этой же папки запустить исполняемый файл «Program.exe».
Если существует файл «FileName_КомпьютерИмярек.txt» по пути «\\Server\Share$», скопировать его в папку, содержащую данный пакетный файл. Затем из этой же папки запустить исполняемый файл «Program.exe». »
Файл в любом случае существует и всегда называется одинаково и тот файл который нужно скопировать имеет такое же название
Все из этого я понимаю, только как это решает мою задачу? можно на моем примере? Спасибо!
можно на моем примере? »
На каком «Вашем примере»?! Вы разве привели какую-то конкретику: откуда и куда копировать — имя исходной папки, имя конечной папки, примеры имени файла; имя и путь к приложению?!
Ясно. Вы отредактировали свой пред-предыдущий пост позже, когда он уже «ушел» далеко вверх.
На каком «Вашем примере»?! Вы разве привели какую-то конкретику: откуда и куда копировать — имя исходной папки, имя конечной папки, примеры имени файла; имя и путь к приложению?! »
Да привел.
Имя копируемого(заменяемого) файла всегда одинаковое.
Имена компьютеров от P1 до P30
Папка программы и имя выполняемого файла C:\Program Files\программа\файл_запуска.exe
Папка в которой нужно заменить файл C:\Program Files\программа\папка_в_которой_нужно_заменить_файл
Папка с сгенерированными файлами для замены d:\папка_с_файлами_для_замены\p1....p30\файл_для_замены
Пример:
Я запускаю батник на компьютере P5, он лезет в папку "d:\папка_с_файлами_для_замены\p5\файл_для_замены" и копирует его с заменой в папку "C:\Program Files\программа\папка_в_которой_нужно_заменить_файл", после чего запускает программу "C:\Program Files\программа\файл_запуска.exe"
Имена компьютеров от 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
алогизмы на реальные имена и пробуйте.
set sPath=%ProgramFiles%\программа »
А если программа будет находится не на системном диске?
Например:
"D:\программа"
Что потребуется изменить?
Спасибо, Вы мне очень помогли.
А если программа будет находится не на системном диске?
Например:
"D:\программа"
Что потребуется изменить? »
Вы подразумеваете, что приложение было установлено не в «%ProgramFiles%»? Тогда указывайте путь, не используя переменные окружения, напрямую:
set sPath=D:\Путь к папке с приложением
Вы подразумеваете, что приложение было установлено не в «%ProgramFiles%»? Тогда указывайте путь, не используя переменные окружения, напрямую: »
Спасибо!
Решено!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.