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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   как копировать файлы из одной папки в другой через .bat (http://forum.oszone.net/showthread.php?t=336721)

despro 16-09-2018 20:41 2831654

как копировать файлы из одной папки в другой через .bat
 
дело в том что в какую директорию человек установит программу я не знаю так что через Copy "d:\1\" "d:\2\" не пройдет

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

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


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

Khmel_19 16-09-2018 21:00 2831658

используй xcopy

Iska 16-09-2018 21:17 2831664

Цитата:

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

despro, используйте знаки препинания и заглавные буквы в начале предложений для придания тексту смысла. Использовать же повсеместно полужирный шрифт нет никакой необходимости.

Цитата:

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

Какую программу?

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

despro 16-09-2018 21:29 2831667

Цитата:

Цитата Khmel_19
используй xcopy »

ну и? мне нужно файлы с изначальной папки скопировать на уровень ниже
Цитата:

Цитата Iska
Какую программу?
Как правило, путь, куда установлено приложение, тем или иным образом сохраняется в реестре »

Кс 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 2831668

Цитата:

Цитата despro
Кс 1.6 »

У меня его нет (и не будет). Значит, Вы сами — открываете редактор реестра, ищете раздел и параметр, куда записывается путь. Можете воспользоваться помощью Process Monitor'а.

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

despro 16-09-2018 21:48 2831671

Цитата:

Цитата Iska
У меня его нет (и не будет). Значит, Вы сами — открываете редактор реестра, ищете раздел и параметр, куда записывается путь. Можете воспользоваться помощью Process Monitor'а.
Когда Вы точно определите раздел и наименование параметра, куда записывается путь — нам останется только извлечь его, сохранить в переменной окружения и использовать в команде copy/xcopy (…/robocopy ). »

да не вы не поняли
вот допустим я создаю батник в папке cstrike. батник сможет определить что в этой папке (cstrike ) есть папка background?
чтобы дальше работать с ней

Iska 16-09-2018 21:58 2831674

Цитата:

Цитата despro
вот допустим я создаю батник в папке 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 2831676

Цитата:

Цитата Iska
Да, может »

Цитата:

Цитата Iska
Да, может »

а так чтобы изъять оттуда файл и скопировать его на наш ниже(из backroud обратно в cstrike)

Iska 16-09-2018 22:43 2831677

Примерно так:
Код:

@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 2831705

Цитата:

Цитата Iska
Да, может. Относительно местоположения самого пакетного файла — может. »

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

wmic logicaldisk where drivetype=3 get name /value|find "="


Время: 23:49.

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