标题: [文件操作] 【萌新求助】遍历文件夹,移动文件 [打印本页]
作者: 40252492 时间: 2018-2-8 15:50 标题: 【萌新求助】遍历文件夹,移动文件
谢谢各位大佬!=3=
【文件夹树
A》图1》一堆jpg
B》图1》一堆jpg
……
Z》图1》一堆jpg
(jpg的名称为:1~200)
【需求:
1、在A~Z每个字母的文件夹中,建立“原图2”文件夹
2、将“原图1”文件夹中的 编号100往后的jpg图片,全部移动到原图2中
作者: yhcfsr 时间: 2018-2-8 16:25
本帖最后由 yhcfsr 于 2018-2-8 16:28 编辑
- @echo off&setlocal enabledelayedexpansion
- set "SourDir=F:\Test"
-
- cd /d "%SourDir%"
- for /d %%a in (*) do (
- pushd %%a
- for /f "delims=" %%b in ('dir /a-d/b/s') do (
- set/a name=%%~nb&set "FileDir=%%~dpb"&&set "FileDir=!FileDir:~0,-1!"
- if !name! geq 100 robocopy /mov "!FileDir!" "原图2" "%%~nxb">NUL
- )
- popd
- )
- pause&exit
复制代码
作者: 40252492 时间: 2018-2-8 16:46
回复 2# yhcfsr
谢谢您,帮了很大的忙!QAQ(虽然很多语法都没看懂。。。)
十分抱歉,我这边的文件夹树描述错了,还得再麻烦您一下下。。。
【文件夹树
1》A》图1》一堆jpg
1》B》图1》一堆jpg
2》A》图1》一堆jpg
2》B》图1》一堆jpg
(jpg的名称为:1~200)
如上,数字文件夹有很多,每个数字里放着ABCD等
作者: yhcfsr 时间: 2018-2-8 19:17
- @echo off&setlocal enabledelayedexpansion
- set "SourDir=F:\Test"
-
- for /f "delims=" %%a in ('dir /a-d/b/s "%SourDir%"') do (
- set/a FileName=%%~na
- if !FileName! geq 100 (
- set "FilePath=%%~dpa"&&set "FilePath=!FilePath:~0,-1!"
- for /f "delims=" %%b in ("!FilePath!") do (
- set "DestPath=%%~dpb"&&set "DestPath=!DestPath:~0,-1!\原图2"
- robocopy /mov "!FilePath!" "!DestPath!" "%%~nxa"
- )
- )
- )
复制代码
回复 3# 40252492
作者: 40252492 时间: 2018-2-9 09:16
本帖最后由 40252492 于 2018-2-9 09:19 编辑
回复 4# yhcfsr
大佬。。。成功了诶T.T
实际拿到的文件是这个样子的,他最外面的编号不是12345,而是01 02 03 04 05!
【文件夹树
01》A》图1》一堆jpg
01》B》图1》一堆jpg
02》A》图1》一堆jpg
02》B》图1》一堆jpg
我尝试搜索原图,然后cd ..但是失败了,真的麻烦您了! 谢谢~
作者: yhcfsr 时间: 2018-2-9 13:51
回复 5# 40252492
不管是12345,还是0102030405,还是别的什么名字都不影响。应该可以正确执行。
作者: 40252492 时间: 2018-2-9 17:51
回复 6# yhcfsr
是的,程序没有问题,十分感谢您
早上用的时候提示“找不到该路径”,查了好久没正确的解释
同事说是文件夹树埋得太深了,结果拉出来放到D盘根目录下就直接出来了
请问为何会这样呢?明明cmd里echo %cd%是可以获取到的,可能是作为参数有字节限制之类的吧。。。
然后,我稍微修改了一下下,如下- for /f "delims=" %%a in ('dir /a-d/b/s "%cd%"') do (
- set/a FileName=%%~na
- if !FileName! geq 2100 (
- set "FilePath=%%~dpa"&&set "FilePath=!FilePath:~0,-1!"
- for /f "delims=" %%b in ("!FilePath!") do (
- cd /d %%b
- cd ..
- robocopy /mov "!FilePath!" "原图2" "%%~nxa"
- )
- )
- )
复制代码
如上,主要修改的是剪切的目标路径
因为找到“原图”里编号的图片文件之后,已经在每个字母的文件夹里面了
直接cd ..就回到了上级目录,省去了一次set后面我看不懂的那些,测试可用
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |