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

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

crazydog 18-07-2019 20:51 2880490

Автоматическое определение буквы флешки
 
Уважаемые форумчане. Помогите решить задачу. Для автоматизации рутинной ежедневной задачи используется bat файл.
Одна из задач - копирование определенных файлов на флешку. Задача выполняется на абсолютно разных компьютерах.
Соответственно буква диска каждый раз разная. Сейчас используется так
Код:

SET /p FLASH=ФЛЕШ:
Каждый раз букву диска необходимо ввести с клавиатуры (например F).
Можно ли определить флешку по наличию определенных файлов/папок?

Iska 18-07-2019 22:02 2880494

Цитата:

Цитата crazydog
Сейчас используется так »

Где расположено это «так»?

crazydog 18-07-2019 22:27 2880496

Цитата:

Цитата Iska
Где расположено это «так»? »

Код:

SET LINK=%~dp0
SET /p FLASH=ФЛЕШ:
xcopy "%LINK%\REPORT\*.*" "%FLASH%:\REPORT\" /H /R /K /Y


Iska 18-07-2019 23:15 2880500

Не совсем тот ответ, которого я ожидал, но я Вас понял.

У Вас есть машины, есть некий каталог на этих машинах, в этом каталоге будет располагаться пакетный файл с указанным кодом, исполняя который произвольным образом, Вы хотите добиться того, чтобы не требовалось указывать букву раздела флэш-накопителя, так? Тогда, да, можно, например, использовать:
Цитата:

Цитата crazydog
определить флешку по наличию определенных файлов/папок? »

можно ориентироваться на метку раздела, можно ориентироваться на volume serial number…


Тупо ориентируемся на некий каталог и файл в нём на одном или нескольких флэш-накопителях (для реального применения уберите echo):
Код:

@echo off
setlocal enableextensions enabledelayedexpansion

set sPath2File=\0075\Sample.txt

for /f "usebackq delims=" %%i in (
        `2^>nul "wmic.exe" LogicalDisk where "DriveType = 2 AND MediaType = null" get DeviceID /value ^| find.exe /i "DeviceID"`
) do for /f "usebackq delims=" %%j in ('%%i') do (
        set "s%%j"
        if defined sDeviceID if exist "!sDeviceID!%sPath2File%" echo xcopy.exe "%~dp0REPORT\*.*" "!sDeviceID!\REPORT\" /H /R /K /Y
)

endlocal
exit /b 0


Patroklos 19-07-2019 08:05 2880525

Вот простой и надёжный вариант.

Код:

@echo off
Title .NET Framework 3.5 Offline Installer
for %%I in (D E F G H I J K L M N O P Q R S T U V W X Y Z) do if exist "%%I:\\sources\install.wim" set setupdrv=%%I
if defined setupdrv (
echo Found drive %setupdrv%
echo Installing .NET Framework 3.5...
Dism /online /enable-feature /featurename:NetFX3 /All /Source:%setupdrv%:\sources\sxs /LimitAccess
echo.
echo .NET Framework 3.5 should be installed
echo.
) else (
echo No installation media found!
echo Insert DVD or USB flash drive and run this file once again.
echo.
)
pause


Charg 19-07-2019 09:07 2880531

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

megaloman 19-07-2019 10:07 2880543

Цитата:

Цитата Iska
Тупо ориентируемся на некий каталог »

Еще вариант
Код:

@Echo Off
cls
        Set "From=%~dp0Report\*.*"
        Set "To=\Report\"

        Set /A Nflash=0, NflashTo=0
        FOR /F "usebackq tokens=1 skip=1 delims=:" %%i IN (`"wmic logicaldisk where drivetype="2" get caption | FINDSTR /R /C:"[A-Z]""`) DO (
                Set /A Nflash+=1
                If Exist "%%i:\%To%" (
                        Set /A NflashTo+=1
                        Xcopy "%From%" "%%i:\%To%" /H /R /K /Y /F               
                )
        )
        If %Nflash%==0 (Echo !!! Flash drives not found  &Pause &Exit /B 2)
        If %NflashTo%==0 (Echo !!! Flash drives with "%To%" not found  &Pause &Exit /B 2)
pause
Exit /B

При наличии нескольких флэшек с целевой папкой копии сделаются на все
Не проверял, но, помнится, с внешним USB HDD работать не будет (там drivetype="5")

crazydog 19-07-2019 15:05 2880587

Цитата:

Цитата Charg
Или более надежный вариант - забить на копирование на флешку и скриптом копировать данные на какой-нибудь дропбокс, гуглодиск или onedrive. И\или архивировать и почтой самому себе слать. »

Данный вариант не очень подходит:
1. На компьютерах у клиентов запрещено устанавливать софт
2. Не у всех есть интернет (либо правила информационной безопасности)

Всем спасибо за обсуждение, ответ с №7 посчитал самым оптимальным. (№4 тоже хороший вариант)


Время: 12:51.

Время: 12:51.
© OSzone.net 2001-