我希望有人能帮我编写一个批处理文件。
我有一个包含 800 多个目录的文件夹,每个目录都有一个照片.png和一个子目录A其中包含 3 个子目录,我需要将每个目录中的照片向下移动 2 个子目录,放入子目录 1
我对编程/脚本了解一点,但还不够,哈哈,我想应该是某种 for 循环,以递归方式查看每个目录并找到 photo.png 的每个实例,然后以某种方式将每个实例移动到子目录中
例如
> ─Parent > ├─────directory1 > │ ├──sub-directoryA > │ ├──sub-directory1 <──────────│ > │ ├──sub-directory2 │ > │ ├──sub-directory3 │ > │ photo.png <────────move this into here──│ > ├─────directory2 > │ ├──sub-directoryA > │ ├──sub-directory1 <──────────│ > │ ├──sub-directory2 │ > │ ├──sub-directory3 │ > │ photo.png <────────move this into here──│ > ├─────directory800 > │ ├──sub-directoryA > │ ├──sub-directory1 > │ ├──sub-directory2 > │ ├──sub-directory3 > │ photo.png
答案1
答案2
好吧,在谷歌搜索后,我终于找到了一个解决方案,我将在这里发布以供将来参考,以防其他人想要做同样的事情。我将发布完整的脚本,然后详细说明每个部分的作用。只需将此批处理文件放在您正在工作的目录中,它就会扫描其下方的目录并移动照片,只需更改照片或目录的名称,您甚至可以更改文件扩展名并移动视频、文本文件等 :)
请记住,对于 CMD 窗口使用单个 %,对于批处理文件使用 2 个 %%
for /f "tokens=*" %%a in ('dir /b /A:D "*"')
do (
if not exist "%%a\sub-directoryA"
md "%%a\sub-directoryA\sub-directory1"
Echo >-------------------------------------------------------------------<
if exist "%%a\photo.jpg" echo %%a photo.jpg found.
if exist "%%a\photo.jpg" move "%%a\photo.jpg" "%%a\sub-directoryA\sub-directory1\" >NUL
if exist "%%a\*.jpg" echo %%a *.jpg found.
if exist "%%a\*.jpg" move "%%a\*.jpg" "%%a\sub-directoryA\sub-directory1\" >NUL
Echo:
)
Echo >-------------------------------------------------------------------<
timeout /t 5 >NUL
。
for /f "tokens=*" %%a in ('dir /b /A:D "*"')
:for /f 针对一组文件循环命令
“tokens=*” 导致所有项目都被处理
%%a 是命令行参数,只是为找到的每个项目创建一个参数
('dir /b /A:D "*"')
/B- 裸格式(无标题、文件大小或摘要)
/广告- 文件属性,在本例中是文件夹
“*”- 仅表示所有文件夹
do (
if not exist "%%a\sub-directoryA" md "%%a\sub-directoryA\sub-directory1"
:检查是否存在名为 sub-directoryA 的文件夹,如果不存在则创建该文件夹以及 sub-directory1
if exist "%%a\photo.jpg" echo %%a photo.jpg found.
if exist "%%a\photo.jpg" move "%%a\photo.jpg" "%%a\aa\artwork\" >NUL
只检查所有文件,如果找到该文件,ECHO 会在屏幕上显示消息,然后将其移动到指定文件夹