Board logo

标题: [文本处理] 【已解决】批处理如何把带有关键字的文件夹移动到其它带有关键字的文件夹中? [打印本页]

作者: toyerspollors    时间: 2021-1-10 17:30     标题: 【已解决】批处理如何把带有关键字的文件夹移动到其它带有关键字的文件夹中?

本帖最后由 toyerspollors 于 2021-1-11 19:55 编辑

比如当前目录下有大量这样的文件夹
35 photo-from-video-11
67 photo-from-video-35
84 photo-from-video-03
96 photo-from-video-27
156 photo-from-video-18
162 photo-from-video-56

我想编写为把当前路径下带有关键字from-video的文件夹,移动到D:\22\DAY\08 MM-VIDEO-02\目录下,但是08 MM-VIDEO-02这个目录我也想编写为带有关键字MM-VIDEO的路径,不知道如何编写,求教各位老师!
作者: terse    时间: 2021-1-10 18:07

这样?

set str=MM-VIDEO
*%str%*

作者: Batcher    时间: 2021-1-10 19:52

回复 1# toyerspollors


test.bat
  1. @echo off
  2. cd /d "%~dp0"
  3. set "FolderKey=MM-VIDEO"
  4. set "FolderDir=D:\22\DAY"
  5. for /f "delims=" %%i in ('dir /b /ad "%FolderDir%\*%FolderKey%*"') do (
  6.     set "DstFolder=%FolderDir%\%%i"
  7. )
  8. for /d %%i in (*from-video*) do (
  9.     move /y "%%i" "%DstFolder%\"
  10. )
复制代码
请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: toyerspollors    时间: 2021-1-10 20:18

受教了.......

如果在本地路径下我要移动的不是文件夹,而是以下的文件,这个编码又该怎么修改。

35 photo-from-video-11.mp4
67 photo-from-video-35.mp4
84 photo-from-video-03.mp4
96 photo-from-video-27.mp4
156 photo-from-video-18.mp4
162 photo-from-video-56.mp4
作者: toyerspollors    时间: 2021-1-10 20:18

回复 3# Batcher


    受教了.......

如果在本地路径下我要移动的不是文件夹,而是以下的文件,这个编码又该怎么修改。

35 photo-from-video-11.mp4
67 photo-from-video-35.mp4
84 photo-from-video-03.mp4
96 photo-from-video-27.mp4
156 photo-from-video-18.mp4
162 photo-from-video-56.mp4
作者: Batcher    时间: 2021-1-10 20:20

回复 5# toyerspollors


    3楼代码第5行的 dir /b /ad 改成 dir /b /a-d
作者: toyerspollors    时间: 2021-1-10 21:19

本帖最后由 toyerspollors 于 2021-1-10 21:25 编辑

谢谢!学到了一些东西,虽然还不是很懂,哈哈!


第6行的代码       set "DstFolder=%FolderDir%\%%i"
能稍微解释一下原理吗?
作者: Batcher    时间: 2021-1-10 21:52

回复 7# toyerspollors


第6行上面加一行试试能否理解:
echo "DstFolder=%FolderDir%\%%i"
作者: toyerspollors    时间: 2021-1-10 22:10

回复 8# Batcher

set "DstFolder=%FolderDir%\%%i"

前面的%FolderDir%是不是代表D:\22\DAY
后面的\%%i 暂时不懂理解代表什么,是D:\22\DAY\*MM-VIDEO*的意思吗?

我是初学者,很多东西还不理解,如果问题不好解说也没关系,可能以后学习的东西多了我就懂理解了。
作者: Batcher    时间: 2021-1-10 22:25

回复 9# toyerspollors


前面的,正确。
后面的,严格来说不太准确。

请按照8楼说的方法执行一下,观察 %%i 的值到底是什么。
如果你对于 for 命令本身的执行不清楚,推荐阅读:

批处理for命令教程
http://bbs.bathome.net/thread-31727-1-1.html

批处理for命令从入门到精通以及配套练习题
http://bbs.bathome.net/thread-2189-1-1.html
http://bbs.bathome.net/thread-2336-1-1.html
作者: toyerspollors    时间: 2021-1-10 22:49

谢谢指导,我先研究一下代码,有不懂的再来向你学习。
作者: toyerspollors    时间: 2021-1-11 10:28

回复 3# Batcher



老师,以下代码是你3楼的代码,我也按你的要求把8楼的代码加到了第6行上面,另外我在最前面加了3个创建文件夹的代码,  
但是运行bat没反应。。不知道怎么回事。请指导一下,谢谢!  

@echo off

md "31 photo-from-video-77"
md "64 photo-from-video-23"
md D:\22\DAY\"77MM-VIDEO-56"

cd /d "%~dp0"
set "FolderKey=MM-VIDEO"
set "FolderDir=D:\22\DAY"
for /f "delims=" %%i in ('dir /b /ad "%FolderDir%\*%FolderKey%*"') do (
echo "DstFolder=%FolderDir%\%%i"
    set "DstFolder=%FolderDir%\%%i"
)
for /d %%i in (*from-video*) do (
    move /y "%%i" "%DstFolder%\"
)


另外如果我想用BAT创建以下文件夹,红色部分的代码如何编写才能成功。
md D:\22\DAY\"77MM-VIDEO(HD)-56"\
作者: Batcher    时间: 2021-1-11 11:18

回复 12# toyerspollors


请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
作者: Batcher    时间: 2021-1-11 11:18

回复 12# toyerspollors


D:\Test>dir /b "D:\22\DAY\"
08 MM-VIDEO-02

D:\Test>md "D:\22\DAY\77MM-VIDEO(HD)-56"

D:\Test>dir /b "D:\22\DAY\"
08 MM-VIDEO-02
77MM-VIDEO(HD)-56
作者: toyerspollors    时间: 2021-1-11 19:55

回复 13# Batcher


谢谢老师,原来是我保存bat的时候,编码格式没有选择正确。现在可以正确运行了。

另外想了解一下老师最后移动的代码中写move /y  为什么我再次移动相同的目录会提示选择是否覆盖,而不是强行覆盖呢?
作者: toyerspollors    时间: 2021-1-12 22:20

回复 6# Batcher


老师,我想实现把带有关键字的文件移动到带有关键字的文件夹中,已按照你提示修改了下方红色字体部分,但是没起作用,代码如下。

@echo off

echo >"31 photo-from-video-77.mp4"
echo >"64 photo-from-video-23.mp4"
md .\22\DAY\"77 MM-VIDEO-56"

cd /d "%~dp0"
set "FolderKey=MM-VIDEO"
set "FolderDir=.\22\DAY"
for /f "delims=" %%i in ('dir /b /a-d "%FolderDir%\*%FolderKey%*"') do (
    set "DstFolder=%FolderDir%\%%i"
)
for /d %%i in (*from-video*) do (
    move /y "%%i" "%DstFolder%\"
)

pause




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2