Powershell 检查任何 SD \ CF 卡(可能是多个),然后将 JPG 和 CR2 文件复制到不同的目录

Powershell check for any SD \ CF cards (may be multiple), then copy JPG's and CR2 files to different directories

目标:我想自动将文件(JPG 和 \ 或 CR2)从多个 SD \ CF 卡复制到我的文件到我的照片存储系统中。

问题:与 Powershell 相比,我在 Bash 中更自在,但 WSL2 还不能轻松支持 USB 驱动器。

问:如何检查是否插入了一张或多张SD\CF卡,以及是否存在某些文件夹?在这种情况下,[drive]:\DCIM0CANON。我发现了 this 个问题,但我无法完全解决它。理想情况下,我希望能够将输出存储在一个变量中,然后我可以循环访问它(运行 说复制例程)

.Net 命名空间...

Get-WMiObject -Class Win32_Volume | Select Name, DriveLetter, Caption, Label, DevideID, DriveType, Capacity

Get-CimInstance -ClassName Win32_Volume | Select Name, DriveLetter, Caption, Label, DevideID, DriveType, Capacity

或使用 Win32_DiskDrive、Win32_DiskDrivePhysicalMedia,并使用模型 属性 值。

Partitions : 1
DeviceID   : \.\PHYSICALDRIVE6
Model      : SDHC Card
Size       : 3964584960
Caption    : SDHC Card

... 和 Get-PSDrive ...

Get-PSDriive

Get-PSDrive -PSProvider FileSystem

# Results
<#
Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
A                                                    A:\
C                 202.06      23718.91 FileSystem    C:\
D                1211.06     123642.32 FileSystem    D:\
G                 202.06        710.91 FileSystem    \Music\GratefulDead
#>

...cmdlet 将列出所有连接的驱动器,如图所示。

此处记录了过滤驱动器:

Filtering get-psdrive to all Local Drives

DriveType is a property of the Win32_Volume structure which enumerates the type of drive. The value 3 stands for Local Disk. Below is the full list of values.

0 - Unknown

1 - No Root Directory

2 - Removable Disk

3 - Local Disk

4 - Network Drive

5 - Compact Disk

6 - RAM Disk

请注意,没有 property/option 专门用于 SD 或 CF。

因此,对于您的用例,如果您的 SD/CF 具有与上述类似的根标签,那么您可以使用根 属性 值或使用驱动器大小作为目标来访问它们,因为在正常情况下,您的 camera/phone 等存储介质的总大小始终低于 32GB。