标题: [文件操作] [已解决] 批处理把文件移动到文件下指定目录 [打印本页]
作者: qwop1209 时间: 2019-5-23 22:54 标题: [已解决] 批处理把文件移动到文件下指定目录
本帖最后由 qwop1209 于 2019-5-25 13:17 编辑
例现在有文件 文件名可能包含特殊字符
2010-01-01.jpg 2010-01-01-09.02.rar 2010-02-02jpg 2010-02-02-08.01.rar 2010-03-01.jpg 2010-04-03.jpg
现在有文件夹下面包含子文件夹
2010年
├ 2010-01
│ 2010-01-01
└ 2010-01-02
├ 2010-02
│ 2010-02-01
└ 2010-02-02
├ 2010-03
│ 2010-03-01
└ 2010-03-02
├ 2010-04
│ 2010-04-01
│ 2010-04-02
└ 2010-04-03
现在想把文件移动到对应的文件名下面 2010-01-01.jpg 和 2010-01-01-09.02.rar 移动到子目录文件2010-01-01内 2010-02-02jpg 和2010-02-02-08.01.rar 动到子目录文件2010-02-02内 等
往各位大佬有解决方法。。
作者: zaqmlp 时间: 2019-5-23 23:35
本帖最后由 zaqmlp 于 2019-5-23 23:41 编辑
- @echo off
- set info=互助互利,支付宝扫码头像,感谢赞助
- rem 有问题,可加QQ956535081及时沟通
- title %info%
- cd /d "%~dp0"
- powershell -NoProfile -ExecutionPolicy bypass ^
- $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
- for($i=0;$i -lt $files.Count;$i++){^
- $m=[regex]::match($files[$i].BaseName,'^^((\d{4})-\d{2})-\d{2}');^
- if($m.success){^
- $fd=$m.groups[2].value+'\'+$m.groups[1].value+'\'+$m.groups[0].value;^
- [void](md $fd -force);^
- write-host ($files[$i].Name+' --^> '+$fd);^
- mv -liter $files[$i].Name $fd;^
- };^
- };^
- write-host '%info%' -ForegroundColor green;
- pause
复制代码
作者: qwop1209 时间: 2019-5-24 23:03
b]回复 2# zaqmlp
你好。你这个代码没法移动啊。 现在文件是放在最上面的目录的。。文件要移动几个子目录下面。
作者: qwop1209 时间: 2019-5-24 23:16
因为有多层目录。所以你给的代码没法移动啊
作者: zaqmlp 时间: 2019-5-25 00:11
回复 4# qwop1209
原问题跟你现在说的根本不符,你先把问题捋清楚再说,或者加我Q
作者: miqilaosu 时间: 2019-5-25 09:42
本帖最后由 miqilaosu 于 2019-5-25 10:04 编辑
@echo off
title 同名复制
color 2f
cd /d %~dp0
for /f "delims=*" %%i in ('dir /a-d/b/s "*"') do (
for /f "delims=." %%s in ('dir /ad/b/s "*"') do (
if "%%~ni"=="%%~ns" (
xcopy /y "%%i" "%%s"
echo.成功复制"%%i"到"%%s"文件夹
)
)
)
pause
*****************************************************************
复制文件不包含子文件夹文件的话把/S去掉
作者: qwop1209 时间: 2019-5-25 10:58
回复 6# miqilaosu
你好能不能改成同名移动而不是复制呢?? 就是直接移动到相同名字的目录下面
作者: miqilaosu 时间: 2019-5-25 11:25
本帖最后由 miqilaosu 于 2019-5-25 12:41 编辑
回复 7# qwop1209
你自己改就行啊xcopy是复制move是移动
用move换成xcopy就成了啊,不过有一个问题问你下,如果移动的话你文件夹有没有重名的,没有重名的还好办,有重名的话就可以用先复制在删除原文件的方,因为我也是新人,不会简单方法,估计大神们都可以优化很多
…………………………………………………………………………………………
@echo off
title 同名复制
color 2f
cd /d %~dp0
for /f "delims=*" %%i in ('dir /a-d/b "*"') do (
for /f "delims=." %%s in ('dir /ad/b/s "*"') do (
if "%%~ni"=="%%~ns" (
xcopy /y "%%i" "%%s"
echo,del "%%i">>"del.bat"
)
)
)
call del.bat
del "del.bat"
pause
作者: qwop1209 时间: 2019-5-25 12:50
回复 8# miqilaosu
没有重名的。其实我就是现在很多图片要移到对应的文件夹下面。。数量太多。手动移动太麻烦了
不过谢谢回答。我回家就试试
作者: miqilaosu 时间: 2019-5-25 13:12
回复 9# qwop1209
没重名的就之前是的把xcopy 换成move 就成了
作者: qwop1209 时间: 2019-5-25 13:18
回复 10# miqilaosu
恩恩。。十分感谢。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |