bat файл, копирование с флэшки
Допустим надо скопировать файлы из папок, которые на флэшке, на жёсткие диски Windows - с этим трудностей не возникает. А возникает вот в чём, что вставля эту самую флэху в разные компьюетры, то мы получаем изменчивую букву почти на каждой машине, то наша флэшка имеет букву G, на другом H, на третем например J, на чётвёртом ещё как-нибудь назовётся. Как тогда быть с сценарием бат файла?
|
Discount, сценарий на сам ой флэшке лежит?
Код:
setlocal
set FlashLetter=%~d0
copy "FlashLetter\folder\*.*" C:\temp\
скопирует все файлы из папки folder, лежащей в корне флэшки, с которой запущен батник, в папку c:\temp (папка назначения должна существовать; можно сделать в батнике перед командой копирования проверку на её существование и создание её в случае, если она отсутствует).
|
Цитата:
Цитата mwz
Код:
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\
???
|
Если батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска
Код:
@Echo Off
Set "DirOut=D:\Жил был у бабушки\avz4\Base\"
Set "FileIn=\У попа была собака\Base\*.*"
Md "%DirOut%"
If Exist "%DirOut%" (
Copy "%FileIn%" "%DirOut%"
) Else (
Echo Папка для копирования не создана
Pause
)
|
Цитата:
Цитата megaloman
Если батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска
Код:
@Echo Off
Set "DirOut=D:\Жил был у бабушки\avz4\Base\"
Set "FileIn=\У попа была собака\Base\*.*"
Md "%DirOut%"
If Exist "%DirOut%" (
Copy "%FileIn%" "%DirOut%"
) Else (
Echo Папка для копирования не создана
Pause
)
------- »
|
Если честно немного не понял код, можешь поподробней пожалуйста.
Да, батник лежит в корне флешки.
Кстати с первым кодом что то не получается(
|
получилось с помощью команд
xcopy "%~d0:\Мои файлы\Local" "D:\Data" /c /i /d /e /h /y
Всем спасибо!)
Можно закрывать
|
Моя ошибка: FlashLetter -- переменная окружения, и третья строка должна была выглядеть как:
copy "%FlashLetter%\folder\*.*" C:\temp\
(со знаками процента; причём при тестировании у себя я их ставил -- а тут упустил... :sorry: )
А переменная %~d0 возвращает букву диска или флэшки уже с двоеточием после неё; можете проверить, запустив батник:
Код:
setlocal
set FlashLetter=%~d0
echo %FlashLetter%
pause
-- во второй и третьей строках буква диска, с которого запущен батник, будет уже с этим двоеточием.
|
Цитата:
Если честно немного не понял код
|
Код:
определяю куда будем копировать файлы 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
Смысл моего сообщения был в том, что
Цитата:
Если батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска
|
причём батник не обязательно в корне диска.
|
Время: 06:26.
© OSzone.net 2001-