Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автоматическое определение буквы флешки

Ответить
Настройки темы
CMD/BAT - [решено] Автоматическое определение буквы флешки

Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемые форумчане. Помогите решить задачу. Для автоматизации рутинной ежедневной задачи используется bat файл.
Одна из задач - копирование определенных файлов на флешку. Задача выполняется на абсолютно разных компьютерах.
Соответственно буква диска каждый раз разная. Сейчас используется так
Код: Выделить весь код
SET /p FLASH=ФЛЕШ:
Каждый раз букву диска необходимо ввести с клавиатуры (например F).
Можно ли определить флешку по наличию определенных файлов/папок?

Отправлено: 20:51, 18-07-2019

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата crazydog:
Сейчас используется так »
Где расположено это «так»?

Отправлено: 22:02, 18-07-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Где расположено это «так»? »
Код: Выделить весь код
SET LINK=%~dp0
SET /p FLASH=ФЛЕШ:
xcopy "%LINK%\REPORT\*.*" "%FLASH%:\REPORT\" /H /R /K /Y

Отправлено: 22:27, 18-07-2019 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


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

У Вас есть машины, есть некий каталог на этих машинах, в этом каталоге будет располагаться пакетный файл с указанным кодом, исполняя который произвольным образом, Вы хотите добиться того, чтобы не требовалось указывать букву раздела флэш-накопителя, так? Тогда, да, можно, например, использовать:
Цитата 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
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:15, 18-07-2019 | #4


Пользователь


Сообщения: 87
Благодарности: 4

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
@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

Отправлено: 08:05, 19-07-2019 | #5


Аватара для Charg

Ветеран


Сообщения: 2798
Благодарности: 469

Профиль | Отправить PM | Цитировать


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

Отправлено: 09:07, 19-07-2019 | #6


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


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

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 19-07-2019 в 10:16.

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:07, 19-07-2019 | #7


Новый участник


Сообщения: 7
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Charg:
Или более надежный вариант - забить на копирование на флешку и скриптом копировать данные на какой-нибудь дропбокс, гуглодиск или onedrive. И\или архивировать и почтой самому себе слать. »
Данный вариант не очень подходит:
1. На компьютерах у клиентов запрещено устанавливать софт
2. Не у всех есть интернет (либо правила информационной безопасности)

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

Отправлено: 15:05, 19-07-2019 | #8



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Автоматическое определение буквы флешки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - автоматическое определение медиаданных aka_smile Microsoft Windows 10 3 17-04-2018 07:20
VBS/WSH/JS - Автоматическое определение Сетевой карты O L E G Скриптовые языки администрирования Windows 0 26-04-2012 10:25
Интернет - IE не получает автоматическое определение прокси olann Microsoft Windows 2000/XP 5 20-10-2010 13:39
[решено] автоматическое определение модели принтера nigra Microsoft Windows NT/2000/2003 4 02-12-2009 14:39
Службы - Автоматическое назначение буквы диску paul69 Microsoft Windows 2000/XP 1 21-02-2008 16:08




 
Переход