Компьютерный форум 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=282200)

Discount 13-05-2014 20:41 2351012

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

mwz 14-05-2014 01:06 2351154

Discount, сценарий на самой флэшке лежит?

Код:

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

скопирует все файлы из папки folder, лежащей в корне флэшки, с которой запущен батник, в папку c:\temp (папка назначения должна существовать; можно сделать в батнике перед командой копирования проверку на её существование и создание её в случае, если она отсутствует).

Discount 14-05-2014 13:15 2351284

Цитата:

Цитата 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\

???

megaloman 14-05-2014 19:17 2351459

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

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

Цитата:

Цитата megaloman
Если батник на том же диске (в частности, флэшке), что и копируемые файлы, можно указать полный путь к файлам без указания диска
Код:
@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 2351499

получилось с помощью команд

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

mwz 15-05-2014 00:28 2351589

Цитата:

Цитата Discount
xcopy "%~d0:\ »

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

А переменная %~d0 возвращает букву диска или флэшки уже с двоеточием после неё; можете проверить, запустив батник:
Код:

setlocal
set FlashLetter=%~d0
echo %FlashLetter%
pause

-- во второй и третьей строках буква диска, с которого запущен батник, будет уже с этим двоеточием.

megaloman 15-05-2014 12:42 2351729

Цитата:

Если честно немного не понял код
Код:

определяю куда будем копировать файлы      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.

Время: 06:26.
© OSzone.net 2001-