Войти

Показать полную графическую версию : как копировать файлы из одной папки в другой через .bat


despro
16-09-2018, 20:41
дело в том что в какую директорию человек установит программу я не знаю так что через Copy "d:\1\" "d:\2\" не пройдет

я знаю только что в папке программы будет такой путь cstrike/resources/background
ну а в ней еще папка с названием 1 (да просто имя папки "1")

как мне из cstrike/resources/background/1/ скопировать файлы в cstrike/resources/background (то есть на уровень ниже)

если не поняли то могу пересказать обычными словами

Khmel_19
16-09-2018, 21:00
используй xcopy

Iska
16-09-2018, 21:17
если не поняли то могу пересказать обычными словами »
despro, используйте знаки препинания и заглавные буквы в начале предложений для придания тексту смысла. Использовать же повсеместно полужирный шрифт нет никакой необходимости.

дело в том что в какую директорию человек установит программу я не знаю »
Какую программу?

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

despro
16-09-2018, 21:29
используй xcopy »
ну и? мне нужно файлы с изначальной папки скопировать на уровень ниже
Какую программу?
Как правило, путь, куда установлено приложение, тем или иным образом сохраняется в реестре »
Кс 1.6

видишь ли любой человек может установить игру в другой диск. Не именно как я на диск F допустим да диск D
тем самым команда copy "F:\Games\Counter-Strike Ultra Offensive\AutoPlay\Docs\cstrike\resource\background\1\файл.ехе" "F:\Games\Counter-Strike Ultra Offensive\AutoPlay\Docs\cstrike\resource\background\"

не сработает
т.к диск и локация установки другая

но директория cstrike\resource\background\1\ в любом случае останется

Iska
16-09-2018, 21:42
Кс 1.6 »
У меня его нет (и не будет). Значит, Вы сами — открываете редактор реестра, ищете раздел и параметр, куда записывается путь. Можете воспользоваться помощью Process Monitor'а.

Когда Вы точно определите раздел и наименование параметра, куда записывается путь — нам останется только извлечь его, сохранить в переменной окружения и использовать в команде copy/xcopy (…/robocopy :)).

despro
16-09-2018, 21:48
У меня его нет (и не будет). Значит, Вы сами — открываете редактор реестра, ищете раздел и параметр, куда записывается путь. Можете воспользоваться помощью Process Monitor'а.
Когда Вы точно определите раздел и наименование параметра, куда записывается путь — нам останется только извлечь его, сохранить в переменной окружения и использовать в команде copy/xcopy (…/robocopy ). »
да не вы не поняли
вот допустим я создаю батник в папке cstrike. батник сможет определить что в этой папке (cstrike ) есть папка background?
чтобы дальше работать с ней

Iska
16-09-2018, 21:58
вот допустим я создаю батник в папке cstrike. батник сможет определить что в этой папке (cstrike ) есть папка background?
чтобы дальше работать с ней »
Да, может. Относительно местоположения самого пакетного файла — может. Например:
@echo off
setlocal enableextensions enabledelayedexpansion

if exist "%~dp0background\." (
echo Found folder [background].
) else (
echo Not found folder [background].
)

endlocal
exit /b 0

despro
16-09-2018, 22:10
Да, может »
Да, может »
а так чтобы изъять оттуда файл и скопировать его на наш ниже(из backroud обратно в cstrike)

Iska
16-09-2018, 22:43
Примерно так:
@echo off
setlocal enableextensions enabledelayedexpansion

if exist "%~dp0background\." (
if exist "%~dp0background\файл" (
>nul copy "%~dp0background\файл" "%~dp0"
) else (
echo Can't find file [%~dp0background\файл].
)
) else (
echo Can't find folder [%~dp0background].
)

endlocal
exit /b 0

или, более прагматично, так:
@echo off
setlocal enableextensions enabledelayedexpansion

set sSourceFolder=background
set sSourceFile=файл

if exist "%~dp0%sSourceFolder%\." (
if exist "%~dp0%sSourceFolder%\%sSourceFile%" (
>nul copy "%~dp0%sSourceFolder%\%sSourceFile%" "%~dp0"
) else (
echo Can't find source file [%~dp0%sSourceFolder%\%sSourceFile%].
)
) else (
echo Can't find source folder [%~dp0%sSourceFolder%].
)

endlocal
exit /b 0

YuS_2
17-09-2018, 06:19
Да, может. Относительно местоположения самого пакетного файла — может. »
Можно и все диски перелопатить на предмет наличия... если очень надо, конечно. :)
Список дисков, через тот же wmi, получить не особо сложно:
wmic logicaldisk where drivetype=3 get name /value|find "="




© OSzone.net 2001-2012