Войти

Показать полную графическую версию : [решено] bat файл, копирование с флэшки


Discount
13-05-2014, 20:41
Допустим надо скопировать файлы из папок, которые на флэшке, на жёсткие диски Windows - с этим трудностей не возникает. А возникает вот в чём, что вставля эту самую флэху в разные компьюетры, то мы получаем изменчивую букву почти на каждой машине, то наша флэшка имеет букву G, на другом H, на третем например J, на чётвёртом ещё как-нибудь назовётся. Как тогда быть с сценарием бат файла?

mwz
14-05-2014, 01:06
Discount, сценарий на самой флэшке лежит?

setlocal
set FlashLetter=%~d0
copy "FlashLetter\folder\*.*" C:\temp\
скопирует все файлы из папки folder, лежащей в корне флэшки, с которой запущен батник, в папку c:\temp (папка назначения должна существовать; можно сделать в батнике перед командой копирования проверку на её существование и создание её в случае, если она отсутствует).

Discount
14-05-2014, 13:15
Код:
setlocal
set FlashLetter=%~d0
copy "FlashLetter\folder\*.*" C:\temp\
скопирует все файлы из папки folder, лежащей в корне флэшки, с которой запущен батник, в папку c:\temp (папка назначения должна существовать; можно сделать в батнике перед командой копирования проверку на её существование и создание её в случае, если она отсутствует). »

Спасибо огромное! Если я всё правильно понял, в корне флэхи допустим есть папка folder с моими файлами. Надо все эти файлы копирнуть в несуществующую папку (т.е. её надо создать батником), то в итоге получаем такой скрипт?

setlocal
set FlashLetter=%~d0
MD C:\FolderName
copy "FlashLetter\folder\*.*" C:\FolderName\

???

megaloman
14-05-2014, 19:17
Если батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска @Echo Off

Set "DirOut=D:\Жил был у бабушки\avz4\Base\"
Set "FileIn=\У попа была собака\Base\*.*"

Md "%DirOut%"

If Exist "%DirOut%" (
Copy "%FileIn%" "%DirOut%"
) Else (
Echo Папка для копирования не создана
Pause
)

Discount
14-05-2014, 19:22
Если батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска
Код:
@Echo Off
Set "DirOut=D:\Жил был у бабушки\avz4\Base\"
Set "FileIn=\У попа была собака\Base\*.*"
Md "%DirOut%"
If Exist "%DirOut%" (
Copy "%FileIn%" "%DirOut%"
) Else (
Echo Папка для копирования не создана
Pause
)
------- »

Если честно немного не понял код, можешь поподробней пожалуйста.
Да, батник лежит в корне флешки.

Кстати с первым кодом что то не получается(

Discount
14-05-2014, 20:54
получилось с помощью команд

xcopy "%~d0:\Мои файлы\Local" "D:\Data" /c /i /d /e /h /y
Всем спасибо!)
Можно закрывать

mwz
15-05-2014, 00:28
xcopy "%~d0:\ »

Моя ошибка: FlashLetter -- переменная окружения, и третья строка должна была выглядеть как:
copy "%FlashLetter%\folder\*.*" C:\temp\
(со знаками процента; причём при тестировании у себя я их ставил -- а тут упустил... :sorry: )

А переменная %~d0 возвращает букву диска или флэшки уже с двоеточием после неё; можете проверить, запустив батник:setlocal
set FlashLetter=%~d0
echo %FlashLetter%
pause-- во второй и третьей строках буква диска, с которого запущен батник, будет уже с этим двоеточием.

megaloman
15-05-2014, 12:42
Если честно немного не понял код
определяю куда будем копировать файлы Set "DirOut=D:\Жил был у бабушки\avz4\Base\"
определяем откуда копируем Set "FileIn=\У попа была собака\Base\*.*"
пытаемся создать папку куда копировать Md "%DirOut%"
если папка существует (создана) If Exist "%DirOut%" (
то копируем Copy "%FileIn%" "%DirOut%"
иначе ) Else (
выдаём аварийное сообщение Echo Папка для копирования не создана
и останавливаемся, чтобы его прочесть Pause

Если использовать xcopy, то без проверки возможности копирования в указываемое место можно записать

XCopy "%FileIn%" "%DirOut%" /D /H /-Y
Или, как у Вас,
xcopy "\Мои файлы\Local\*.*" "D:\Data\" /c /i /d /e /h /y

Смысл моего сообщения был в том, чтоЕсли батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска причём батник не обязательно в корне диска.




© OSzone.net 2001-2012