[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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的路径,不知道如何编写,求教各位老师!

这样?

set str=MM-VIDEO
*%str%*

TOP

回复 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
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

受教了.......

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

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

TOP

回复 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

TOP

回复 5# toyerspollors


    3楼代码第5行的 dir /b /ad 改成 dir /b /a-d
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

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


第6行的代码       set "DstFolder=%FolderDir%\%%i"
能稍微解释一下原理吗?

TOP

回复 7# toyerspollors


第6行上面加一行试试能否理解:
echo "DstFolder=%FolderDir%\%%i"
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 8# Batcher

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

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

我是初学者,很多东西还不理解,如果问题不好解说也没关系,可能以后学习的东西多了我就懂理解了。

TOP

回复 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
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

谢谢指导,我先研究一下代码,有不懂的再来向你学习。

TOP

回复 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"\

TOP

回复 12# toyerspollors


请参考Q-01观察一下哪行代码在报错:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 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
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 13# Batcher


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

另外想了解一下老师最后移动的代码中写move /y  为什么我再次移动相同的目录会提示选择是否覆盖,而不是强行覆盖呢?

TOP

返回列表