如何根据文件名称将文件移动到文件夹中?

如何根据文件名称将文件移动到文件夹中?

我在某个文件夹“ABC”中有几个.pdf 和 .tex 文件。

它们均由该计划命名

C01S02_Word.pdf
C03S02SS01_Description_random_words.pdf
C04S01SS02_More_words.pdf
and so forth

C在这个方案中代表章节,年代部分和SS子节。因此,在文件夹 ABC 中,我还有每个章节的文件夹,简称为C01二氧化碳等等。在每个章节文件夹中,我都有一个名为图片

有人可以写一个批处理脚本,以便我可以移动所有 .tex 和 .pdf 文件到各自的图片-文件夹,C04S01SS02_More_words.pdf会被移动到C04/Pictures等等C01S02_Word.pdfC01/Pictures

笔记:我当然已经在谷歌上搜索过了但到目前为止,我无法将所有这些位转换为工作脚本。我不想再进行 T&E 运行了。:/

答案1

创建此批处理文件:

@echo off
for %%F in (*.pdf *.tex) do call :subr "%%F"
exit /b

:subr
set filename=%1
move %1 %filename:~1,3%\Pictures
exit /b

笔记:

  • for %%F in (*.pdf *.tex) do …*.pdf对每个与 或匹配的文件名执行一次以下语句*.tex,并将其%%F设置为文件名。
  • call :subr "%%F"调用脚本的下面三行,其中第一个参数(%1)设置为"%%F"(文件名,带引号)。
  • exit /b退出脚本而不会吹走命令提示符窗口。
  • set filename=%1将文件名参数复制到filename变量中。
  • move移动文件。
  • %variable:~start,len% 取 的指定子字符串(第一个字符是 #0),所以的前三个字符也是。(计数从 0 开始;我使用 1 来跳过。)%variable%%filename:~1,3%%filename%"
  • exit /b从子程序返回。

相关内容