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

[文件操作] [已解决] 批处理把文件移动到文件下指定目录

本帖最后由 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:41 编辑
  1. @echo off
  2. set info=互助互利,支付宝扫码头像,感谢赞助
  3. rem 有问题,可加QQ956535081及时沟通
  4. title %info%
  5. cd /d "%~dp0"
  6. powershell -NoProfile -ExecutionPolicy bypass ^
  7.     $files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
  8.     for($i=0;$i -lt $files.Count;$i++){^
  9.         $m=[regex]::match($files[$i].BaseName,'^^((\d{4})-\d{2})-\d{2}');^
  10.         if($m.success){^
  11.             $fd=$m.groups[2].value+'\'+$m.groups[1].value+'\'+$m.groups[0].value;^
  12.             [void](md $fd -force);^
  13.             write-host ($files[$i].Name+' --^> '+$fd);^
  14.             mv -liter $files[$i].Name $fd;^
  15.         };^
  16.     };^
  17.     write-host '%info%' -ForegroundColor green;
  18. pause
复制代码
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

b]回复 2# zaqmlp


    你好。你这个代码没法移动啊。 现在文件是放在最上面的目录的。。文件要移动几个子目录下面。

TOP

因为有多层目录。所以你给的代码没法移动啊

TOP

回复 4# qwop1209

原问题跟你现在说的根本不符,你先把问题捋清楚再说,或者加我Q
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

本帖最后由 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去掉

TOP

回复 6# miqilaosu


    你好能不能改成同名移动而不是复制呢?? 就是直接移动到相同名字的目录下面

TOP

本帖最后由 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

TOP

回复 8# miqilaosu


    没有重名的。其实我就是现在很多图片要移到对应的文件夹下面。。数量太多。手动移动太麻烦了

不过谢谢回答。我回家就试试

TOP

回复 9# qwop1209


    没重名的就之前是的把xcopy 换成move 就成了

TOP

回复 10# miqilaosu


   恩恩。。十分感谢。

TOP

返回列表