Этот код получает последний готовый к использованию съемный диск (например, только что подключенный USB-накопитель):
$drives = [System.IO.DriveInfo]::GetDrives()
$r = $drives | Where-Object { $_.DriveType -eq 'Removable' -and $_.IsReady }
if ($r) {
return @($r)[-1]
}
throw "No removable drives found."
Этот способ не требует предварительной установки имени фиксированного тома. Мы можем использовать разные USB-накопители, не зная / не устанавливая их имена.
UPDATE
Чтобы выполнить перетаскивание части задания, вы можете сделать это.
Создайте сценарий PowerShell (используйте, например, Блокнот) C: \ TEMP_110628_041140 \ Copy-ToRemovableDrive.ps1 (путь зависит от вас):
param($Source)
$drives = [System.IO.DriveInfo]::GetDrives()
$r = $drives | Where-Object { $_.DriveType -eq 'Removable' -and $_.IsReady }
if (!$r) {
throw "No removable drives found."
}
$drive = @($r)[-1]
Copy-Item -LiteralPath $Source -Destination $drive.Name -Force -Recurse
Создайте файл Copy-ToRemovableDrive.bat (например, на рабочем столе), он использует скрипт PowerShell:
powershell -file C:\TEMP\_110628_041140\Copy-ToRemovableDrive.ps1 %1
Теперь вы можете подключить USB-накопитель и перетащить файл на значок Copy-ToRemovableDrive.bat
на рабочем столе. Это должно скопировать перетаскиваемый файл на только что подключенный USB-накопитель.