【发布时间】:2020-01-12 21:18:39
【问题描述】:
我想将文件从闪存驱动器E:\ 复制到本地计算机。但是本地机器上的文件夹结构是这样的:
C:\Device\Number\One\xyz_01-01-19\Path\To\Folder
C:\Device\Number\Two\xyz_01-02-19\Path\To\Folder
C:\Device\Number\Three\xyz_01-03-19\Path\To\Folder
C:\Device\Number\Four\xyz_01-04-19\Path\To\Folder
有数百个设备文件夹,如One、Two 等,每个文件夹对设备都是唯一的,但所有子文件夹对每个单元都遵循相同的命名约定。 xyz_ 是文件夹名称的固定开头部分,日期格式为 mm-dd-yy 附加在文件夹名称中。
没有规则可以通过批处理脚本自动选择设备文件夹,文件应复制到该设备文件夹中,该文件夹在用户选择的设备文件夹的可变日期相关子文件夹内具有已知路径的子文件夹。因此批处理文件的用户必须输入设备文件夹名称。该文件应仅复制到用户确定的设备文件夹之一。
我遇到的问题是文件夹路径中的日期与一个设备文件夹到下一个设备文件夹不同。除日期外,其他一切都完全相同,我不知道如何获取文件夹名称中包含日期的文件夹名称。
我的脚本类似如下:
REM Asking for the "Device" number
set /P device="Device Number?"
REM Copying files to the server
copy E:\log.pdf C:\Device\Number\%device%\xyz_01-01-19\Path\To\Folder
【问题讨论】:
-
所以您正在尝试解析
C:\Device\Number\*\xyz_??-??-??\Path\To\Folder之类的路径?如果是这样,请使用嵌套的for /Dloosp,它允许为每个匹配的文件夹执行一项任务(如本例中的回显):for /D %%J in ("C:\Device\Number\*") do for /D %%I in ("%%~J\xyz_??-??-??") do echo/%%~I\Path\To\Folder;从那里您可以更进一步,例如插入设备文件夹名称的条件,例如if "%%~nxJ" == "%device%" echo Device folder: %%~J...
标签: batch-file