【发布时间】:2021-04-08 08:30:06
【问题描述】:
我正在使用摄像机,我们有一个程序可以在将 SD 卡插入 PC 时显示保存的视频。在某些时候,相机制造商更改了保存文件的目录结构和命名约定。我想创建一个批处理文件或 VBS 脚本,将文件重新组织成旧结构。对于基于 Windows 的 PC,这将是一个快速而肮脏的修复,直到我们可以重新编写将包括对 MAC 的支持的软件。它可以是批处理文件或 VBS 脚本,但必须在 Windows 命令提示符下运行,无需安装其他软件。摄像头有前置摄像头和后置摄像头,因此需要处理 2 个文件,并且可能需要重新定位 1 个或多个视频捕获。
文件夹的数量取决于保存的视频数量,假设保存了 4 个视频,那么原始结构如下所示。
- video1
- video.TS
- video2.TS
- video2
- video.TS
- video2.TS
- video3
- video.TS
- video2.TS
- video4
- video.TS
- video2.TS
新结构是这样的
- Normal
- F
- DATETIME-000001F.TS
- DATETIME-000002F.TS
- DATETIME-000003F.TS
- DATETIME-000004F.TS
- R
- DATETIME-000001R.TS
- DATETIME-000002R.TS
- DATETIME-000003R.TS
- DATETIME-000004R.TS
目标是将这些文件移动到较旧的文件结构中,以便软件可以读取和显示它们。我已经有一个在插入 SD 卡时运行的批处理文件,所以我的假设是我可以在正常进程触发之前包含一些脚本来移动这些文件。我对脚本很生疏,需要一些指导。
我当前的脚本如下所示。
setlocal enableextensions enabledelayedexpansion
set count=0
for %%x in (\Normal\F\*.TS) do (
set /a count += 1
mkdir video!count!
move /Y \Normal\F\*.TS \video!count!\video.TS
move /Y \Normal\R\*.TS \video!count!\video2.TS
)
endlocal
总是有2个视频,1个前置摄像头,1个后置摄像头,所以我只使用“F”目录来获取计数。
没有移动命令它创建目录结构就好了...如果有 1 个文件它只创建 1 个文件夹,如果有 8 个文件它创建 8 个文件夹。但是当有多个文件时,它希望将所有文件放在第一个文件夹中。 我假设我需要嵌套另一个循环,但我尝试过的一切都失败了,这是最接近的尝试。
【问题讨论】:
-
提示:
%%x是一次一个文件,因此您可以一次复制一个文件:move /Y "%%x" "video!count!\video.TS。为后部文件添加第二个循环(惰性方法)或使用子字符串操作(set /?)替换\F` with\R` 并在同一循环中复制后部文件..
标签: shell batch-file